https://mp.weixin.qq.com/s/kf4FvAFye_bRdT49Yow7Hg
简单介绍Misc中各个辅助方法的用途和实现。
1. ParameterizedBundle
包含一个隐式参数的Bundle。
2. DecoupledHelper
rvs:Ready/Valid们。
a. fire():返回一个rvs是否全部为真的判断;
b. fire(exclude, includes):从rvs中临时排除一个exclude,在临时增加一组includes,再返回一个是否全部为真的判断;
3. MuxT
根据cond的值,从con和alt中选择一个使用。
4. MuxTLookup
Creates a cascade of n MuxTs to search for a key value:
5. ValidMux
创建一个级联的选择器,按先后顺序,谁的valid为真,则输出谁的bits。
6. Str
a. 基于字符串生成一个可以表示这个字符串的UInt:
b. 生成一个可以表示参数字符的UInt:
c. 把二进制UInt的值,转换为10进制表示,每个数字占用一个字符(8位)的UInt:
d. 把二进制SInt的值,转换为10进制表示,每个数字占用一个字符(8位)的UInt。如果是负值,则添加负号,如果是正值,则添加一个空格。
7. Split
把x拆分成多个部分。
8. Random
在[0, mod)范围内生成一个随机数,实现方式是生成一个随机数对mod进行求余运算:
9. Majority
在Seq[Bool]中是1多,还是0多。1多则输出1,0多则输出0。
a. n的值比一半多一个,即5个里面取3个,6个里面取4个;
b. in.subsets(n):每个子集,都是从in.size个元素中取n个组成的;
c. reduce(_ && _):只有n个元素全为1,结果才为1,即in中1占多数;
d. reduce(_ || _):存在1,结果即为1;
10. PopCountAtLeast
x中是否存在不低于n个值为1的位:
11. MaskGen
单独介绍,这里略去。
12. 附录
略