sawyer0 0 24 апреля, 2017 Опубликовано 24 апреля, 2017 · Жалоба добрый день, помогите описать поведение сигнала readdatavalid, чтобы было как на картинке (не сплошной, а 'рваный' и случайный). я сделал, так чтобы он был без разрывов, подряд. как теперь исправить, на псевдослучпайное поведение? initial begin forever begin @(posedge clk); waitrequest = 1; readdatavalid = 0; wait(read); // Keep 'waitrequest' HIGH for [1..3] cycles for (int I=0; I<$urandom_range(3,1); I++) begin @(posedge clk); end waitrequest = 0; wait(~read); waitrequest = 1; // Wait some time ([0..5] cycles) after 'read' goes LOW for (int I=0; I<$urandom_range(5,0); I++) begin @(posedge clk); end // send data + valid for (int I=0; I<burstcount; I++) begin readdatavalid = 1; readdata = $urandom_range(10,1); @(posedge clk); readdatavalid = 0; end end end спасибо. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
iosifk 3 24 апреля, 2017 Опубликовано 24 апреля, 2017 · Жалоба добрый день, помогите описать поведение сигнала readdatavalid, чтобы было как на картинке (не сплошной, а 'рваный' и случайный). я сделал, так чтобы он был без разрывов, подряд. как теперь исправить, на псевдослучпайное поведение? Сделайте task, к нему набор входных величин или параметров. И передавайте в таск случайные значения нужных вам параметров.. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Fitc 0 24 апреля, 2017 Опубликовано 24 апреля, 2017 · Жалоба помогите описать поведение сигнала readdatavalid, чтобы было как на картинке (не сплошной, а 'рваный' и случайный). я сделал, так чтобы он был без разрывов, подряд. как теперь исправить, на псевдослучпайное поведение? Если используете $urandom_range, значит пишете на SystemVerilog. $urandom_range не лучший вариант генерации псевдослучайных воздействий в SystemVerilog из-за равномерного распределения. Лучше использовать классы со случайными переменными и констрейнтами (см.стандарт или SystemVerilog for Veriifcation). Но на начальных этапах можете и $urandom_range использовать. Что мешает присвоить сигналу readdatavalid результат $urandom_range(1,0)? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
sawyer0 0 24 апреля, 2017 Опубликовано 24 апреля, 2017 · Жалоба Что мешает присвоить сигналу readdatavalid результат $urandom_range(1,0)? спасибо. получил, что хотел. for (int I=burstcount; I>0;) begin readdatavalid = $urandom_range(1,0); readdata = $urandom_range(2**16-1,1); if (readdatavalid) I--; @(posedge clk); end readdatavalid = 0; Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
iosifk 3 24 апреля, 2017 Опубликовано 24 апреля, 2017 · Жалоба Сделайте task, к нему набор входных величин или параметров. И передавайте в таск случайные значения нужных вам параметров.. И добавлю. Я бы все эти рандомные величины читал бы из файла. Потому как при перезапуске теста не надо делать компиляцию проекта. И при одинаковых наборах можно будет сравнивать диаграммы сигналов... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Alexxxxey 0 25 апреля, 2017 Опубликовано 25 апреля, 2017 · Жалоба Ecли вы тестируете свой компонент с авалон интерфейсом, можете посмотреть avalon verification ip suite, там есть функциональные модели для мастера и слейва. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться