Array가 local에서만 쓰이고 port에는 사용할 수 없다. Array가 표현을 간단하게 하는 장점이 있는데, 그 중에 하나가 다른 logic으로 array item을 선택할 수 있다.
예를 들어 data가 array로 선언되어 있어 sel이라는 logic으로 item을 선택할 수 있다.
import math
outport(selected[8])
N = 16
array(data[N][8])
logic("sel[%s]" % int(math.log2(N))) # 16개 중에 선택하므로 4bits가 필요
selected <= data[sel]
Switch 문장없이 data[sel] 형식으로 item을 선택할 수 있으므로 mux 회로를 구성하거나 memory access에 사용하면 된다.
다음 예는 초기화된 data를 가진 rom memory를 저장한 후 enable이 될 때마다 memory의 내용을 출력하는 예이다.
inport(clk,reset,enable)
outport(data[8])
N = 16
array(rom[N][8],init=[i for i in range(N)])
logic("addr[%s]" % min_bits(N-1))
with sequence(clk) :
addr <= (0, reset, addr + 1,enable)
with sequence(clk) :
data <= rom[addr]