lcytms
发表于 2018-4-9 08:44:38
1027
编写hamming_decoder.v代码。
最后一个,3’b111。
这是三组均有错。
汉明码它有一个特征,就是线性分组码,它能检二纠一。
它能纠正一个错误,它能检查出两个错误。
纠正只能是一个比特发生错误,才能纠正。
lcytms
发表于 2018-4-9 08:46:43
1028
编写hamming_decoder.v代码。
所以说,现在是三组均有错,三者的交集只有一个数,对应C6。
把C6取反。
Ctrl+S、Ctrl+K。
下面我们写它的验证。
我们用ABV来做它的验证。
lcytms
发表于 2018-4-9 08:47:42
1029
编写ABV验证。
基于断言的验证。
这次呢,我们加一个噪声源。
lcytms
发表于 2018-4-11 09:11:43
1030
编写ABV验证。
电路模型是ham_coder,输出端是有hc_out,输入端是有hc_in。
我给一个噪声模型。
让它纠正一个错误。
我们让它定期地产生一个错误。
我们为它产生一个激励。
这种ABV验证代表了现在的一个趋势。
lcytms
发表于 2018-4-11 09:13:07
1031
编写ABV验证。
我们以前写testbench,总是把验证模型放在testbench里面,需要激励的地方,用行为声明成reg,用线来观测。
现在大多数写法都是写成ABV了。
使用激励器。
DUT。
STIM,激励器。
所有的信号都是它的激励。
有edata,3:0。
有写请求。
lcytms
发表于 2018-4-11 09:14:06
1032
编写ABV验证。
有读请求。
这是要激励的信号。
有时钟。
复位。
然后呢,我们绘制一个计分板。
计分板是一个什么概念呢?
计分板可以看到它的覆盖率。
lcytms
发表于 2018-4-12 09:00:07
1033
编写ABV验证。
100%,满分,这个验证就过了。
Scoreboard,我们写成SCB。
还要评估。
在它里面会有一个软件的模型。
来评估硬件得到的结果,跟软件的结果是否相同。
在信道上加噪。
Ham_coder有一个ddata的输出,我们让它直接输出给计分板。
lcytms
发表于 2018-4-12 09:01:25
1034
编写ABV验证。
用计分板来评估。
接着,凡是给模型的信号,就给计分板一份。
DUT,这是验证的模型,可综合的。
这三个是不可综合的,是非综合目的的编码。
现在呢,我就来写这段ABV的验证。
以后我们可能会用ABV的验证越来越多。
lcytms
发表于 2018-4-12 09:02:27
1035
编写ABV验证。
新建hamming_coder_tb.v文件。
基于断言的验证,不能写时标。
时标就在激励器里面,或者计分板里面。
我先写激励器。
lcytms
发表于 2018-4-13 09:40:21
1036
编写ABV验证。
新建hamming_stimulator.v文件。
激励器,这里要写时标。