访问手机版页面
你的位置:老古开发网 > 其他 > 正文  
编写高效的测试设计(testbenches)(译10)
内容导读:
有用的语言结构
      Verilog
      有用的Verilog语言结构,如 $monitor, $display,
      及$time,在前面的verilog测试示例中论述过,这一节说明另外的可以在测试设计中使用的verilog语句结构。
      
      force/release
      force/release语句可以用来跨越进程对一个寄存器或一个电路网络的赋值。这结结构一般用于强制特定的设计的行为。一旦一个强制值释放,这个信号保持它的状态直到新的值被进程赋值。以下是force/release语句的用法。
      
      module testbench;
      ..
      initial begin
      reset = 1;
      force DataOut = 101;
      #25 reset = 0;
      #25 release DataOut;
      ..
      ..
      end
      endmodule
      
      
      assign/deassign
      assign/deassign语句与force/release相类似,但是assign/deassign只用于设计中的寄存器。他们一般用于设置输入值。就象一个force语句,assign语句超越进程语句的赋值。以下是一个assign/deassign语句的用法。
      
      module testbench;
      ..
      ..
      initial begin
      reset = 1;
      DataOut = 101;
      #25 reset = 0;
      release DataOut;
      ..
      ..
      end
      initial begin
      #20 assign reset = 1;// this assign statement overrides the earlier
      statement #25 reset = 0;
      #50 release reset;
      endmodule
      
      
      
      timescales
      timescale指示被用于为测试指定单位时间步。它也影响仿真器的精确度。表示符号为:‘timescale
      reference_time/precision
      Reference_time是一个用于测量的单位时间。Precision决定延时应该达到的精度,为仿真设置单位步距。以下是‘
      timescale的使用方法。
      
      
      ‘timescale 1 ns / 1 ps
      // this sets the reference time to 1 ns and precision to 1 ps.
      module testbench;
      ..
      ..
      initial begin
      #5 reset = 1; // 5 unit time steps correspond to 5 * 1ns = 5ns in
      simulation time
      #10 reset = 0;
      ..
      end
      initial begin
      $display (“%d , Reset = %b”, $time, reset); // this display
      // statement will get executed
      // on every simulator step, ie, 1 ps.
      end
      endmodule
      
      如果仿真使用时延值,仿真就必须运行在一个比最小时延还好的精确度以内(为了归一化时延)。例如,如果9ps延时在仿真库中使用,相应仿真的精确度就必须是在1ps到9ps之间可调的范围。
      
      只读储器初始化文件
      verilog提供$readmemb和 $readmemh命令来读取ascii文件来初始化存储器的内容。这个命令可以在仿真中用来初始化Xilinx
      BlockRAM 或者SelectRAM器件。符号表达如下:
      $readmemb (“<design.mif>”, design_instance);
      MIF是由crorgenerator 生成的存储器初始化文件(Memory Initialization File)。使用者指定MIF的内容。
      
      VHDL
      除了前文曾经叙述过的vhdl命令以外(assert,wait,report),以下的结构也对vhdl测试台文件的创建有所帮助。
      
      meminitfile
      vhdl提供一个meminitfile记录用来输入存储模块的内容。以下是它的符号说明:
      FILE meminitfile: TEXT IS IN “<design.mif>”;
      MIF是由crorgenerator 生成的存储器初始化文件(Memory Initialization File)。使用者指定MIF的内容。
标签:
来源: 作者: 时间:2006/9/25 16:50:53
相关阅读
推荐阅读
阅读排行
最近更新
商品推荐