目录

1. datapath

1.1 pipeline

有三种pipeline, 这三种pipe从端口上来看时序是一样的,最终效果都是用正沿打一拍。

Receiver1xPipeline

前一级是用正沿打出来的,这里先用负沿打一下是为了修hold。 比如前级reg的clk tree比较短,后级的clk tree比较长,这样后级采样的时候hold容易出问题。

Pipeline

OutputPipeline

RxPipeline

1.2 example

    DataPath(1) {
      output_bus_width       : 2;
      ScanHost(1) {
      }
      Pipeline(4) {
      }
      Multiplexer(1) {
          Connections {
              secondary_bus_data_in  : s0_busin[1:0];
          }
          Pipeline(33) {
          }
          Receiver1xPipeline (rx22) {
          }
      }
      Pipeline(2) {
      }
      Pipeline(1) {
        ExtraOutputPath {
            Connections {
              // bus_clock_out      : s0_bus_clock_out;
              bus_data_out       : s0_busout[1:0];
            }
            Pipeline(11) {
            }
        }
      }
      Receiver1xPipeline (rx0) {
      }
    }

graph LR ssn_busin-->rxpipe0 rxpipe0-->pipe1 pipe1-->pipe2 pipe2-->mux1 pipe1-->pipe11; pipe11-->s0_busout; s0_busout -.->s0_busin s0_busin-->rxpipe22 rxpipe22-->pipe33 pipe33-->mux1 mux1-->pipe4 pipe4-->ssh ssh-->ssn_busout