Jump to content

    

_Ivan_

Свой
  • Content Count

    613
  • Joined

  • Last visited

Everything posted by _Ivan_


  1. Всем привет! Интересует такой вопрос: Вот у нас есть code coverage. Там анализируется такой показатель как transitions в fsm. Допустим в DUT у нас есть автомат, который при резете из любого состояния переходит в состояние IDLE. То есть чтобы получить 100% покрытия для модуля по этому показателю мне нужно сделать тестбенч, который резетит модуль в тот момент, когда в нем происходит экшен. Вопросы: 1) Как по фен-шую сделать такую штуку? Видится драйвер резета и sequence резета запущенная параллельно с нормальным тестбенчем и нужно еще получается отключать покрытие и scoreboard когда модуль в резете. 2) А такое вообще делают в верификационной индустрии? Показатель Code coverage всегда должен быть равен 100% или же можно идти на сделку с совестью и ...? У меня получилось 80 процентов всего по одному из модулей.
  2. May be you first need to create work library and then add files which you need to simulate and then run vsim command with arguments such as global top file of testbench?
  3. Вопросец такой: я создал класс и написал к нему ограничения: 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
  4. Проблему решил! Не установил изначально gcc компилятор! В итоге скопировал архив в папку установки, прописал PATH и заработало!
  5. Появились следующие мысли - с каких то версий квесты у нее есть встроенный компилятор и если раньше нужно подсовывать *.so файл то теперь видимо нет. Если я вношу ошибку в С файл то все равно та же ошибка, то есть скорей всего нужно подцепить С компилятор...
  6. Теме ап. Questa Sim -64 10.2c Это файл gmodel.c #include <svdpi.h> //#include <gmodel_tb_top.h> int factorial(int i) { if(i <= 1) { return 1; } else { return i*factorial(i-1); } } Это файл gmodel_tb_top.sv package user_math; import "DPI-C" function int factorial (input int i); endpackage module test; import user_math::*; initial begin $display("%d", factorial(1)); end endmodule В квесте делаю так: vlib work vlog gmodel_tb_top.sv gmodel.c Получаю vlog gmodel_tb_top.sv gmodel.c # QuestaSim-64 vlog 10.2c Compiler 2013.07 Jul 19 2013 # -- Compiling package user_math # -- Compiling module test # -- Importing package user_math # # Top level modules: # test # ** Error: gmodel_tb_top.sv(14): Verilog Compiler exiting # C:/questasim64_10.2c/win64/vlog failed. Помогите, пожалуйста, найти ошибку...
  7. The Zynq Book

    электронная версия не подходит?
  8. По последнему. Удалил папку с либой, затем создал все вновь. Програм завелся, надписи получил. Какой то жесткий глюк...
  9. Додеградировал дизайн до следующего состояния: Модуль верхнего уровня: //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 Что за фигня вообще...
  10. Да. У меня есть DUT - написан на верилоге. Я с его инстанцировал в топ модуль, с помощью интерфейса соединил с vip i2c коркой и на это остановился. Попытался запустить в квестасим, симулятор не ругается, но на sda я вижу х. Экспериментировал так, что написал модпорты на интерфейс - увидел на sda времянки, но в лог.1. на sda - я вижу пунктир на графике - может конфликт уровней, не знаю вообщем. Переносил в програм команду дисплей первой строчкой - ничего не показывает. Вот я и не понимаю в чем дело...
  11. Добрый день! Хочу сделать тестбенч для своего модуля и нашел подходящую корку 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 иерархию
  12. У меня похожая задача, только нужно реализовать на ПЛИС. Вопросец такой: а то, что первый блок NAND флешки всегда не битый - это стандарт или фича отдельного производителя? Например, микрон это в даташите не указывает.
  13. Проблема, скорей всего, идет из желания зарабатывать. Нужно определиться, сколько конкретно ТС хочет зарабатывать. Дальше смотреть перспективы - быть наемным работником или бизнесменом поможет ли достичь эти цели? По второму сейчас, на мой взгляд, идет тренд на технологическое предпринимательство. Причем можно тупо делать все на заказ, но тут тоже никто не будет особо много платить, либо делать продукт и продавать его по всему миру - примеры - Ди Хальт, виртурилка, Олег Артамонов, Алиса Шевченко http://www.forbes.ru/tekhnologii/internet-...ashchite-bankov В мск есть коворкинг сталь, где есть акселератор для железных стартапов + куча народу в теме. Можно посмотреть такие вещи как кикстартер, индиегого, бумстартер в категории технологий, т.е. там простенькие продуманные вещи типа макетные платы, собирают огромные суммы. Либо посмотреть что-то типа бизнесмолодости, там есть кейсы купи-продай и можно заработать быстро. У меня кстати есть хороший товарищ, который на индиегого программистом собрал 4,5 тысячи баксов на дописывание одной социальной сети. Мало, но он идейный и ему хватает. Еще нужно сделать ставку на то, что в РФ, к сожалению, средний класс будет умирать, и возможно вливания в оборонку - ниокр - будут сокращаться, ибо цена на нефть. А зарубежом инженер всегда в почете. Сам активно ищу информацию по этой теме.
  14. еще можно проанализировать ветку ищу работу и посмотреть кто что делает удаленно и прикинуть что для этого надо.
  15. Да пробовал. У меня, на мой взгляд, слишком неподходящая специализация для этого - разработка RTL моделей под ПЛИС на верилоге. На апворке очень мало заданий на это, и там куча индусов и есть львиная доля студентов которым что-то надо за недорого. Забросил. Сам сейчас учу С++, возможно будет вторая итерация. Работа - есть почасовая ставка, есть по результату. ПОчасовая ставка с нынешними курсами очень выгодна - от 10 баксов - это порядка 700 руб в час - т.е. 112круб в месяц без учета налогов и комиссий. Видел людей, которые имели ставку и 20, и 50 баксов. Много таких высокооплачиваемых из мира веб-технологий.
  16. Екатеринбург - это промышленный город вроде как! Т.е. там должны быть заводы со станками, которые нужно чинить и обслуживать - об этом можно почитать у DI Halt(правда он из челябинска) Опять таки непонятно - что надо? Есть, кстати, потолок в специальности электронщика - порядка 150к на руки, имхо. Биржи фриланса - очень много индусов и студентов с заданиями, предлагающими 20-30 баксов, которые сами не знают чего хотят. Хотя есть IoT - и задачи к нему чтобы сделать от и до. фриланс зарубежный - апворк.ком и фрилансер.ком Рынок в мск конечно пошире, но что то у всех кризис, и охотники за головами сникли. Электронщику тоже может быть не нужен даже паяльник. Есть схемотехники, которые работают в альтиуме и делают схемы, разводят печатные платы. Есть программисты, которым нужна тупо отладочная плата + к ней нужен будет осциллограф и простенький блок питания. Есть люди, которые могут свой программный код отлаживать удаленно и.т.д. Так что пространство для маневров есть.
  17. +1 к зедборду. Правда можно еще посмотреть в сторону red pitaya или snickerdoodle для разнообразия Цинки считаются как процессоры с плис, а не плис с процессорами, но это дает гибкость в решении задач. На арм вы можете навесить линукс, сделать там алгоритмы, которые требуют ветвлений, а в плисе оставить жесткую обработку. Да и вообще, ксайлинкс, на мой взгляд, сейчас пытается вовлечь все больше программистов в плис, поэтому надо быть в тренде!
  18. Ноутбук

    Спасибо за ссылку, Андрей Смирнов!
  19. Крутая тема! Очень хочется узнать, как это все сделано на серверной стороне!
  20. Увы. Слюнки текут, но есть зедборд. И стартуют отправку они с 29 марта, поэтому по комментариям людей можно узнать что у них получилось.
  21. https://www.crowdsupply.com/krtkl/snickerdoodle 82 бакса на новейшем zynq = arm + fpga