def __init__(self, layer): InstTemplate.__init__(self) self.config = layer self.out_inst_num = InstTemplate.mod(self, layer.output_dim.channel_, self.Tn) self.in_inst_num = InstTemplate.mod(self, layer.input_dim.channel_, self.sram_size) self.inst_number = self.out_inst_num * self.in_inst_num self.input_size_list = InstTemplate.token_size(self, layer.input_dim.channel_ * 2, self.sram_size * 2) self.output_size_list = InstTemplate.token_size(self, layer.output_dim.channel_ * 2, self.Tn * 2) self.weight_size_list = [] for y in xrange(self.in_inst_num): for x in xrange(self.out_inst_num): self.weight_size_list.append(self.input_size_list[y] * self.output_size_list[x] / 2) self.bias_size_list = self.output_size_list # address self.weight_addr_list = self.compute_addrs(layer.w_addr_base, self.weight_size_list) self.bias_addr_list = self.compute_addrs(layer.b_addr_base, self.bias_size_list) self.input_addr_list = self.compute_addrs(layer.input_addr_base, self.input_size_list) self.output_addr_list = self.compute_addrs(layer.output_addr_base, self.output_size_list) self.output_sram_addr_list = self.compute_addrs(0, self.output_size_list)