| |
hfpb_seq_rand_rw用来随机产生写道hfpb_mem的transaction.随机产生write_operand/read_oprand的sequence. 不过还有点疑问,这些sequence似乎面向了整个地址空间,有可能写到fpu对应的地址0x000~0x00f. 不过写到此地址空间的transaction不会影响hfpb_seq_cal产生的运算sequence, 因为hfpb_seq_cal产生的sequence_items是一个连续完整的操作,能够覆盖memory原有的值。但是有一点风险的地方是, hfpb_seq_rand_rw可能会写到oprand地址,从而引起fpu的动作,这是我们不希望看到的,这部分我还没有完全弄清楚,还需要继续看看。
hfpb_seq_cal用来随机产生指向fpu的运算。需要对hfpb_seq_cal这个class特别注意,他和hfpb_fpu是相辅相成的。hfpb_fpu是将fpu的BUS和memory BUS互转,在数字设计中一般称之为bridge, 自己定义了一个协议。指定memory address 0x0000~0x000f之间的memory被用来做特殊register.分别用来映射fpu运算的运算符,操作数,结果,状态,操作方式。
而hfpb_seq_cal中的hfpb_seq_fpu_transport是将fpu_seq_item转化成memory bus上的transaction, 然后通过hfpb_fpu这个bridge转化到fpu运算单元中去。