pipeline高端玩法—优先级介绍

在前面的系列文章中,已基本阐述了pipeline中的用法,本篇做个总结,重点针各方法的优先级
》last win
无论是systemverilog还是spinalhdl,都有last valid assignment wins的语法特征。如在spinalhdl-doc中所描述:
// every clock cycle evaluation starts hereval paramisfalse = falseval x, y = bool() // define two combinational signalsval result = uint(8 bits) // define a combinational signalresult := 1when(x) {  result := 2  when(y) {    result := 3  }}if(paramisfalse) { // this assignment should win as it is last, but it was never elaborated  result := 4      // into hardware due to the use of if() and it evaluating to false at the time}  
    对应的真值表是:
那么在使用pipeline中,你可能会这么来写:
when(cond1){ haltit()}when(cond2){ spawnit()}  
    参照上面所述的last valid assignment wins的语法特征,你可能认为spawnit的优先级是高于haltit的~
    然而,并非如此。
    pipeline的构建并不是我们在直接构建,而是我们描述了流水线的规则之后交由pipeline的build函数来搭建起整个的流水线结构。既然不是我们直接搭建电路,那么就要注意下在流水线构建过程中这些方法的优先级了。
    回到pipeline的组成结构:
pipeline包含stage和connection两大主体。在pipeline的build构建中,分别对应了internal connection及ininterconnect connection两部分。
》internal connection中的优先级
    来看下在pipeline中关于internal connection的处理:
在之前的文章系列中已基本分析了每个小单元的用法(forks暂时不考虑)。对于每一级stage,默认情况下stage的output端口和input端口是直连的。而后自上到下对应的api处理分别是:
spawnit
flushit(root为true)
throwit(root为true)
haltit
    按照last valid assignment wins的原则,那么上面对应的api则是优先级从高到低的。
》interconnect connection中的优先级
    这里还是以pipeline中常用的m2s为例来看待interconnect connection中的处理方式:
这里我们要区分来看:
m.ready存在(对应前一级stage的output.ready)
m.ready不存在
    先来看m.ready不存在的场景。当m.ready不存在时,上面的处理流程牵涉到的api有:
flushit(line30)
flushnext(line31)
    按照last valid assignment wins的原则,那么上面对应的api则是优先级从高到低的。
    而当m.ready存在时,则牵涉到的api有:
throwit(line19)
flushit(line 30)
flushnext(line 31)
    按照last valid assignment wins的原则,那么上面对应的api则是优先级从高到低的。
》写在最后
    对于spinalhdl pipeline这个“勇者的游戏”系列,至此基本总结的差不多了。写文章相比于看代码还是要费事一些。对于pipeline这个系列,最开始驱使我去研究来源于想对cache的了解,看着dolu的代码如看天书。不得不说pipeline的这个设计简直“惊为天人”!对于逻辑设计来讲无非两大核心:状态机,流水线。在看pipeline之前觉得这个lib真抽象,真正看完分析后觉得真香,之前自己的设计简直太low了,这里简直把高效描述电路发挥到了极致~


曝LG将把LED业务全数转让给中国企业
医疗行业未来将可能维持持续增长趋势
华为云全新上线 Serverless 应用中心,支持一键构建文生图应用
湿敏电阻器的型号命名方法
北京四合院三维数字化改造项目
pipeline高端玩法—优先级介绍
FPGA对其电源提出了一些独特的挑战
没有华为的5G,就像是没有新西兰的橄榄球运动
智能手机双电芯设计 双电芯的充电原理
华为总裁表示5G不可能像4G一样势如破竹
IDC发布对未来手机市场发展的十个预测
中国突破FPGA一大关键性技术
精密电子组件研发生产企业徕木电子发布2022第一季度报告
RAINSUN内置RF射频5MM蓝牙陶瓷天线
基于MPC的密钥管理与多重签名方式的本质区别解析
【VR视角】别以为VR社交离我们还有很远
第十一代智能英特尔酷睿S系列架构,为实现绝佳游戏体验而优化
用在新能源汽车的超级电容有什么优势?
输配电价改革加速推进,致力优化营商环境
中国电信与产业伙伴共同制定了5G SA部署指南