바이트 넷리스트를 버스 형식으로 변환하는 스크립트

바이트 넷리스트를 버스 형식으로 변환하는 스크립트

비슷한 신호가 있어요

signal[3]_and_[31]
signal[3]_and_[30]
signal[3]_and_[29]
signal[3]_and_[28]
...
signal[3]_and_[0]

signal[2]_and_[31]
signal[2]_and_[30]
signal[2]_and_[29]
signal[2]_and_[28]
...
signal[2]_and_[0]
..
...

으로 변환하고 싶습니다.

signal[3:0]_and_[31:0]

도움을 주시면 감사하겠습니다.

답변1

각 버스트 신호가 한 라인에 있다고 가정하면 다음 Perl 코드를 실행하고 이를 해당 버스 기호로 변환합니다.

perl -MList::Util=max,min -lne '
  BEGIN {
   $sig_re = qr/signal\[(\d+)]_and_\[(\d+)]/;
   $bus_fmt = q/signal[%d:%d]_and_[%d:%d]/;
  }

  /^$sig_re$/ and push(@A,$1), push(@B,$2);

  print(sprintf($bus_fmt,
           max(@A), min(@A),
           max(@B), min(@B)))
                 if eof;
' signals.bit_blasted > signals.bussed

답변2

$ echo 'signal[3]_and_[31]' | awk -F'[][]' '{ print "signal[" $2 ":0]_and_[" $4 ":0]"; }'
signal[3:0]_and_[31:0]

관련 정보