Scode는 integer value를 사용하는데, 해당 value의 bits number를 알 필요가 생기게 된다.
이 때 사용하는 함수들이 min_bits, max_bits_of_list이다.
min_bits
주어진 logic의 width 또는 value를 표현할 수 있는 최소한의 minimum bits를 return한다.
주의할 점은 0, 1이 parameter로 입력되면 0,1은 1bit로 표현가능하므로 1을 return한다. min_bits는 함수에서 주어진 integer value를 표현할 수 있는 logic을 생성할 때 많이 사용된다.
core_lib.sh에 있는 counter_trigger 함수의 일부분이다. counter_trigger는 주어진 n까지 counting 하고 1개의 trigger를 발생시킨다.
def counter_trigger(clk,reset,n) :
count = logic_unique('ctrg_out[%s]' % min_bits(n))
...
주어진 n까지 counting하려면 n을 표현할 수 있는 최소한의 bits width를 갖는 logic을 선언하는 예이다.
max_bits_of_list
max_bits_of_list는 주어진 list에 있는 값들의 min_bits를 구한 후 그 중에서 가장 큰 값을 return하는 함수이다.
주로 복수의 값을 표현할 수 있는 logic을 선언할 때 사용된다. 아래의 code는 core_lib.sh에 있는 tbl_pattern의 code 일부이다.
def tbl_pattern(clk,n,pattern_data):
pattern = logic_unique('pattern[%s]' % max_bits_of_list(pattern_data))
pattern_data가 list로 이루어진 경우 그 값들을 모두 표현할 수 있는 logic을 선언하는 code이다.