集成电路技术分享

 找回密码
 我要注册

QQ登录

只需一步,快速开始

搜索
查看: 3624|回复: 4

编写高效的测试设计(testbenches)---10

[复制链接]
HANG 发表于 2010-6-26 01:34:42 | 显示全部楼层 |阅读模式
本帖最后由 fpgaw 于 2011-8-17 13:40 编辑

有用的语言结构
  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的内容。
ICE 发表于 2010-6-26 03:02:38 | 显示全部楼层
为什么只有3,4,10??????????
longtim 发表于 2010-6-26 03:42:28 | 显示全部楼层
关于VHDL 太少了!!!1可惜
HDL 发表于 2010-6-26 05:40:27 | 显示全部楼层
是啊,很希望看到些讨论VHDL的
Sunlife 发表于 2015-6-17 10:46:33 | 显示全部楼层
只读储器初始化文件
  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的内容。
您需要登录后才可以回帖 登录 | 我要注册

本版积分规则

关闭

站长推荐上一条 /1 下一条

QQ|小黑屋|手机版|Archiver|fpga论坛|fpga设计论坛 ( 京ICP备20003123号-1 )

GMT+8, 2025-6-21 09:22 , Processed in 0.102408 second(s), 22 queries .

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表