_Ivan_ 0 14 июня, 2016 Опубликовано 14 июня, 2016 · Жалоба Добрый день! Хочу сделать тестбенч для своего модуля и нашел подходящую корку vip i2c на сайте syswip. Мой код: //first probe of SV OOP `timescale 1ns/10ps module tb_top; `include "i2c_s_if.sv" bit clk; bit rst_n; wire sda; initial begin clk = 0; forever begin #5 clk <= ~clk; end end initial begin rst_n = 0; #50; @(posedge clk) rst_n = 1; end i2c_s_if first(sda); test test_inst(first); io_expander_controller DUT ( .clk (clk), .rst_n (rst_n), .ar_test (), .data0_from_exp (), .data1_from_exp (), .io_exp_sda (sda), .io_exp_scl (first.scl) ); endmodule сам интерфейс: `timescale 1ns/10ps interface i2c_s_if(inout tri1 sda); // I2C bus signals wire scl; // Tri-state buffer control logic sda_oe; // Tri-state buffers assign sda = sda_oe ? 1'bz : 1'b0; endinterface и код тестбенча: `timescale 1ns/10ps program test(i2c_s_if i2c_slave_if); import I2C_S::*; import PACKET::*; typedef bit [7:0] bit8; typedef bit8 packet[$]; initial begin I2C_s_env i2c_slave = new(i2c_slave_if, "Standart", 55); i2c_slave.startEnv(); #100000; $display("Bla-Bla!"); #100000; $stop; end endprogram Бла-бла в квесте не появляется, sda файла верхнего уровня в x. Что я делаю не так? ПРиветствуются комментарии к структуре, хотя я понимаю, что нужно входить в UVM иерархию Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
GREGOR_812 0 14 июня, 2016 Опубликовано 14 июня, 2016 (изменено) · Жалоба Я, конечно, не гуру тестбенчей, но я не понял, какой модуль тестируется и где он, собственно, вообще в этом коде. Всё-таки: свой модуль или найденная подходящая корка? Какие-то пакеты импортируются, которых нет, какие-то экземпляры модулей объявляются, описания которых нигде нет в коде. Смешивается Verilog и SystemVerilog. Вы понимаете, что Вы делаете вообще? Изменено 14 июня, 2016 пользователем GREGOR_812 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
_Ivan_ 0 14 июня, 2016 Опубликовано 14 июня, 2016 · Жалоба Да. У меня есть DUT - написан на верилоге. Я с его инстанцировал в топ модуль, с помощью интерфейса соединил с vip i2c коркой и на это остановился. Попытался запустить в квестасим, симулятор не ругается, но на sda я вижу х. Экспериментировал так, что написал модпорты на интерфейс - увидел на sda времянки, но в лог.1. на sda - я вижу пунктир на графике - может конфликт уровней, не знаю вообщем. Переносил в програм команду дисплей первой строчкой - ничего не показывает. Вот я и не понимаю в чем дело... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
des00 25 15 июня, 2016 Опубликовано 15 июня, 2016 · Жалоба Экспериментировал так, что написал модпорты на интерфейс - увидел на sda времянки, но в лог.1. на sda - я вижу пунктир на графике - может конфликт уровней, не знаю вообщем. Полагаю что дело вот в этом. ИМХО неправильно использована библиотека. А почему, надо курить на нее документацию/сорцы. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
_Ivan_ 0 15 июня, 2016 Опубликовано 15 июня, 2016 · Жалоба Додеградировал дизайн до следующего состояния: Модуль верхнего уровня: //first probe of SV OOP `timescale 1ns/10ps module tb_top; bit clk; bit rst_n; initial begin clk = 0; forever begin #5 clk <= ~clk; end end test test_inst(); led DUT( .clk (clk), .rst_n (rst_n), .led () ); endmodule ТЕст модуль: module led( input clk, input rst_n, output reg led ); always@(posedge clk) begin if(rst_n) begin led <= ~led; end else begin led <= 1'b0; end end endmodule И программа: `timescale 1ns/10ps program test(); initial begin $display("Bla-Bla0!"); #100000; $display("Bla-Bla!"); #100000; $stop; end endprogram При компиле файла tb_top.sv пишет такое vsim -voptargs=+acc work.tb_top # vsim -voptargs=+acc work.tb_top # ** Note: (vsim-3812) Design is being optimized... # # ** Error: test.sv(14): Module 'i2c_s_if' is not defined. # Optimization failed # Error loading design Причем модуль i2c_s_if вообще нигде не подключен, не участвует и так далее... В библиотеке квесты только 3 этих файла. В аттаче библиотека квесты версия 10.2с tb.rar Что за фигня вообще... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
_Ivan_ 0 15 июня, 2016 Опубликовано 15 июня, 2016 · Жалоба По последнему. Удалил папку с либой, затем создал все вновь. Програм завелся, надписи получил. Какой то жесткий глюк... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
_Ivan_ 0 17 августа, 2016 Опубликовано 17 августа, 2016 · Жалоба Вопросец такой: я создал класс и написал к нему ограничения: class Point; rand int x; rand int y; constraint range{ x >= -32768; x <= 32767; y >= -32768; y <= 32767; } constraint crt{ x**2 + y**2 <= AMP1**2; x**2 + y**2 >= AMP0**2;} constraint corner{ x dist {-32768 := 10, [-32767:-1]:= 1, 0:= 10, [1:32766] := 1, 32767 := 10}; y dist {-32768 := 10, [-32767:-1]:= 1, 0:= 10, [1:32766] := 1, 32767 := 10}; } endclass У меня входные данные 16-битные, т.е. можно заменить int на shortint. Но AMP0 и AMP1 int. Как правильно сделать преобразование типов, ибо по кавергруппам я вижу что констрейн crt фейлится? Проблему решил! amp_dist: coverpoint int'(x)**2 + int'(y)**2 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться