微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > FPGA,CPLD和ASIC > verilog测试代码编写问题,急急

verilog测试代码编写问题,急急

时间:10-02 整理:3721RD 点击:
各位大神们,请问下当我用verilog语言写测试代码时,相对模块内部的信号赋值并仿真,该怎么做?比如我有一个顶层模块top.v,里面有个模块是ram.v,现在我想对ram.v中的信号a赋初值,并且监测a赋值后a的变化,想这么做该怎么写测试代码啊?

a是top.v的内部信号,不是top.v的输入输出信号

可以单独对ram.v写一个测试激励做仿真就成

RAM单独测试

force top.ram.a = 1可以不?

一般信号可以force,也就是楼上所说的。
如果是要初始化RAM,可以用$readmemX这种PLI函数来初始化RAM,一般仿真器都支持。

    同意,一般用$readmemb和$readmemh这两个函数!

嗯,这个问题很基础哦~

你要看你这A信号在RAM内部是属于什么 时钟信号 还是使能信号 或者是地址还是什么的, 然后从下往上推断,直到顶层种的相关信号, 然后在顶层信号添加专门的激励

·define  my_var sti.top.ram.a
module sti();
.....
   initial  begin
    #1000 `my_var = 1;
   end
   always @ (`my_var)
        $display("%b",`my_var)
.....
.....

endmodule

嗯,动懂了,谢谢大家了!



   那请问这个中间信号 在#1000 后一直为1应该怎么办?
`my_calib_done <= '0','1' after 100ns;
这么写 语法错误
求教

   #1000 force `my_calib_done = 1;

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top