前言
在centOS中依靠makefile和VCS搭建了自己的平台之后,可以逐步将之前记录和解决的问题付诸实践,慢慢的归纳和分享。这次要来解决的是一个经典问题,就是验证环境中的静态模块(主要是module和interface)的随机问题;
内容较多,节约时间可直接至“结论”;
背景
我需要做一个延时模块,目的是把输入信号延时一段时间,然后输出,主要的应用场景就是模拟跨异步传输延时误差和总线传输延时误差;
因为总线不止1bit,因此要例化多个模块,那么我的需求是这样的:
1.同一个延时模块进行多次延时,每次随机值应该不同;
2.不同延时模块进行同一次延时,延时随机值应该不同;
3.随机延时值必须可控,即相同种子的两次用例结果应该是一致的;
一般来说,我们做随机,常用的函数就是几个:$random、$urandom、$urandom_range(min, max)、std:randomize(),其中第一个大家一定都知道是要尽量避免使用的