推荐答案
测试一下
题目
timescale 1ns/10ps,其中1ns代表time unit,10ps代表time precision.
A.正确
B.错误
参考答案与知识点
参考答案
正确,选项A。
在Verilog/SystemVerilog中,`timescale`指令用于指定仿真时间单位和时间精度。其标准语法为:`timescale time_unit / time_precision`。其中,`time_unit`(时间单位)定义模块内所有延时、时间值的基本单位,如`#1`表示1个时间单位。`time_precision`(时间精度)定义仿真时对时间值的最小分辨精度,即仿真器能够区分的最小时间间隔。精度必须小于或等于单位,且通常为单位的整数分之一或更小。
题目中`timescale 1ns/10ps`:`1ns`是时间单位,`10ps`是时间精度。10ps = 0.01ns,小于1ns,符合语法要求。该设置表示所有无单位的时间值均以1ns为单位,而仿真器的时间精度为10ps,即仿真时对时间取整到10ps的倍数(如`#1.01`会被解析为1.01ns,但因精度限制可能舍入到1.01ns的最近10ps倍数,即1.01ns本身是10ps的倍数,所以精确无舍入)。
常见易错点:
1. 混淆时间单位和时间精度的顺序,误以为`1ns/10ps`是单位/精度,其实`/`前是单位,后是精度,正确。
2. 认为精度必须等于或大于单位,实际必须小于或等于单位(通常等于或更小),此处10ps < 1ns,正确。
3. 误以为`timescale`中的数字单位必须相同,实际可以不同,只要精度小于单位即可。
因此,题目描述完全正确,选择A。
涉及知识点
- `timescale`指令的语法格式
- 时间单位与时间精度的定义
- 时间精度必须小于或等于时间单位
- 仿真中时间值的舍入规则