当前位置: 首页 > news >正文

花园桥网站建设网站建设放在哪个费用

花园桥网站建设,网站建设放在哪个费用,宁阳房产网,wordpress能注册前言 前文提要#xff1a; 【芯片前端】一键生成简易版本定向RTL验证环境的脚本——auto_verification_rtl脚本_尼德兰的喵的博客-CSDN博客 【芯片前端】可能是定向验证的巅峰之作——auto_testbench_autotestbench_尼德兰的喵的博客-CSDN博客 工具路径#xff1a; auto…前言 前文提要 【芯片前端】一键生成简易版本定向RTL验证环境的脚本——auto_verification_rtl脚本_尼德兰的喵的博客-CSDN博客 【芯片前端】可能是定向验证的巅峰之作——auto_testbench_autotestbench_尼德兰的喵的博客-CSDN博客 工具路径 auto_testbench: 用于自动生成verilog rtl的定向用例仿真平台的脚本 在上次完成自诩为“定向验证的巅峰之作”之后我觉得这个工具应该是写到头了不过最近的实践中我发现对于auto_testbench的主要应用场景——CBB与UT的验证而言如果能不依赖于方法学进行一些简单预期和比对还是可以大幅收敛debug时间的。 本次升级针对握手接口因为好久没写其他类型接口了脚本的功能概述为 对于握手接口单输出的模块会进行符合协议的输入随机会自动生成采样与比对task而根据输入生成预期的task需要手动填充对于不满足单输出的其他握手接口模块会进行符合协议的输入随机此时如果想要进行比对需要对环境进行比较大的改动对于其他接口模块会生成整套验证环境对接口进行初始化和随机驱动如果不进行仿真只想编译模块在tb.f中注释掉testbench.sv路径然后在sim路径执行make cmp 其他优化包括 优化了生成的tb.f文件修正了模块中有注释是可能误读的问题美化和对齐了一下生成文件 效果亲测 作为一个负责人的工具发布者发布前我先亲自验证了一下这个工具的正确性于是翻出来了去年写的一个cbb bypass_fifo进行了下验证然后发现这个cbb有BUG不过放心我相信这个cbb是没有在工程中使用的。 bypass_fifo的功能是这样对于输入的data如果power为1则正常输出如果为0则丢弃。这个cbb听起来很奇怪不过其实他是另外一个cbb的一部分一对多的场景每个数据可能有不同的通道需要。那么看下出错的log 对着log找到波形的错误处 然后分析下问题不是出现在h57eadcc1这个数身上而是出现在前一个数hb985d7adRTL出口没有就把valid和数变了奇怪的是对于类似的场景其他的数据在出口时序就很正确 那么这个问题如果通过波形是否能发现呢不是太容易 因此这个工具的新功能我初步认为是有效的。 使用说明 就以bypass_fifo的验证环境生成为例看一下如何使用。 第一步还是切换到bypass_fifo的路径执行 auto_testbench -f bypass_fifo.v #如果没有设置全局路径请完整输入auto_testbench的脚本路径 打印信息为 #### Gen over! please cd ./bypass_fifo_verification/sim You need modify ./bypass_fifo_verification/top/testbench.svlike cp ./bypass_fifo_verification_bak/top/testbench.sv ./bypass_fifo_verification/top/ You need modify ./bypass_fifo_verification/cfg/tb.flike cp ./bypass_fifo_verification_bak/cfg/tb.f ./bypass_fifo_verification/cfg/ #### 这里说明一下我的本意是如果已经有bypass_fifo_verification目录了就把bypass_fifo_verification重命名为bypass_fifo_verification_bak不过吧脚本写的好像是有点问题导致这个功能时灵时不灵。 第二步切换到bypass_fifo_verification/cfg路径打开tb.f文件并按照需求修改 libext.v -y /home/ICer/gitee_path/auto_testbench/src/../ver/bypass_fifo_pkg.sv /home/ICer/gitee_path/auto_testbench/src/bypass_fifo.v ../top/testbench.sv 第三步切换到bypass_fifo_verification/ver路径检查bypass_fifo_pkg.sv是否符合预期 package bypass_fifo_pkg;parameter ERROR_DEBUG_CNT 5;parameter DEPTH 8;parameter WIDTH 128;int error_cnt 0;bit check_en 0;typedef struct{bit [WIDTH -1:0] data_in;bit data_in_power;} data_in_valid_struct;data_in_valid_struct data_in_valid_bus_q[$];typedef struct{bit [WIDTH -1:0] data_out;} data_out_valid_struct;data_out_valid_struct rm_q[$];data_out_valid_struct data_out_valid_bus_q[$];endpackage 重点说bypass_fifo_pkg文件在这个文档中脚本根据每个valid信号的名字“推测”其它信号是否为该valid“管辖”的信号并将结果按valid分组为struct结构。然后顺便把每个数据结构的队列进行声明如果是输出的valid那么同时声明reference model的预期队列。因此如果有多路valid输出握手的话这里的rm声明会重复需要手动修改。 ERROR_DEBUG_CNT表示发生错误的次数check_en表示是否进行自动比对默认为0需要进行比对时手动将这个值改为1。 第四步切换到bypass_fifo_verification/top路径打开testbench.sv文件还是如此的赏心悦目 其他部分之前都讲过只需说明下新增的auto_verification部分即可。展开这部分可以看到如下代码 task in_queue_gain();while(1)begin(negedge clk);if(data_in_valid data_in_ready)begindata_in_valid_struct data_in_valid_dat;data_in_valid_dat.data_in data_in;data_in_valid_dat.data_in_power data_in_power;data_in_valid_bus_q.push_back(data_in_valid_dat);end//if-end end//while-end endtask: in_queue_gain 对输入进行采样如果有多路输入会在这个task里均进行采样 task out_queue_gain();while(1)begin(negedge clk);if(data_out_valid data_out_ready)begindata_out_valid_struct data_out_valid_dat;data_out_valid_dat.data_out data_out;data_out_valid_bus_q.push_back(data_out_valid_dat);end//if-end end//while-end endtask: out_queue_gain 对输出进行采样如果有多路输出会在这个task里均进行采样 task rm_queue_gain();data_in_valid_struct data_in_valid_dat;data_out_valid_struct data_out_valid_dat;//while(1)begin//wait(data_in_valid_bus_q.size 0);//data_in_valid_dat data_in_valid_bus_q.pop_front();//rm_q.push_back(data_out_valid_dat);//end endtask: rm_queue_gain rm_queue_gain是一个空壳task用于产生预期里面预置了数据类型和队列操作方法 task queue_check();while(1)begindata_out_valid_struct rm_data;data_out_valid_struct dual_data;wait(data_out_valid_bus_q.size() 0);dual_data data_out_valid_bus_q.pop_front();if(rm_q.size() 0) begin$display(dual_data %0p, rm_queue.size 0, dual_data);error_cnt 1;endelse beginrm_data rm_q.pop_front();if(dual_data ! rm_data)beginerror_cnt 1;$display(dual_data(%0p) ! rm_data(%0p) at %t, dual_data, rm_data, $realtime);endelse begin//$display(dual_data(%0p) rm_data(%0p) at %t, dual_data, rm_data, $realtime);endendif(error_cnt ERROR_DEBUG_CNT) begin$display(Check Error!!!);$finish;endend endtask: queue_check 对rm_q[$]和RTL输出接口queue[$]进行自动比对同样需要注意如果有多路进行输出这里只会比对其中一路 代码的最后是固定的initial函数 initial beginforkin_queue_gain();out_queue_gain();rm_queue_gain();if(check_en 1) queue_check();join_none end 然后是关键点根据bypass_fifo的功能对rm_queue_gain task进行改写完成简单的功能预期 task rm_queue_gain();data_in_valid_struct data_in_valid_dat;data_out_valid_struct data_out_valid_dat;while(1)beginwait(data_in_valid_bus_q.size 0);data_in_valid_dat data_in_valid_bus_q.pop_front();if(data_in_valid_dat.data_in_power 1)begindata_out_valid_dat.data_out data_in_valid_dat.data_in;rm_q.push_back(data_out_valid_dat);endend endtask: rm_queue_gain 至此CBB的简单验证环境就完成了。 切换到auto_verification/sim目录执行 make run waveon 之后根据仿真结果和波形进行debug。
http://wiki.neutronadmin.com/news/163755/

相关文章:

  • wordpress采集建站如何塑造和推广网络品牌
  • 哪个大学的网站做的最好看武义县住房和城乡建设局网站
  • 什么网站可以做实验室莱芜二手房产网
  • 品牌服装网站建设现状佛山建设小学官方网站
  • 网站icp备案申请和龙市建设局网站
  • 买书的网站排名找公司建网站
  • 谁会在西安做网站的吗wordpress写文章美化
  • 天津网站建设电话咨询房产中介网站开发模板
  • 西安百度竞价代运营泰州百度seo公司
  • 小程序建站哪家好vps新建的网站打不开
  • wordpress花园网站有关网站开发的论文
  • 山西省建设厅网站首页6wordpress调用固定链接结构
  • 荣成市城乡建设局网站网站内链如何做优化
  • 静安建设网站网站设计云匠网
  • 西安 房产网站建设学校网站建设合同
  • 沧州哪里可以做网站做易买网网站项目心得体会
  • 快递网站推广怎么做网站开发新手什么软件好
  • 有关做美食的网站乐代做网页制作网站
  • 北京网站建设联系兴田德润中国建筑设计网站
  • 制作手机网站工具软件项目交易平台
  • 中国设计网站排行榜前十名建设苏州旅游网站的方案策划书
  • 柳城网站网站建设课程的感受
  • 网站盈利了做网站的哪家好
  • 建站公司怎么备案北京sem网站
  • 胖咯科技 网站建设大学网站模板html
  • 360网站收录提交设计坞
  • 团购网站开发需要多久唐山网站建设400多少钱
  • 深圳做网站优化报价什么推广平台好
  • 电力建设工程质量监督总网站付网站建设费如果做账
  • 作品展示网站 源码it网站建设干嘛的