说我有一个枚举,其中包含有效命令或操作码的列表。 有没有办法为枚举的每个元素创建一个bin?
struct Item {
let num : Int
var isSelected : Bool
}
var numarr = [Item]()
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return numarr.count
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "id", for: indexPath)
let item = numarr[indexPath.row]
cell.textLabel?.text = String(item)
cell.accessoryType = item.isSelected ? .checkmark : .none
return cell
}
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
updateSelection(at: indexPath, value : true)
}
func tableView(_ tableView: UITableView, didDeselectRowAt indexPath: IndexPath) {
updateSelection(at: indexPath, value : false)
}
func updateSelection(at indexPath: IndexPath, value : Bool) {
let item = numarr[indexPath.row]
item.isSelected = value
tableView.reloadRows(at: [indexPath], with: .none)
}
override func viewDidLoad() {
super.viewDidLoad()
(0...100).map{Item(num: $0, isSelected: false)}
}
我尝试过类似的事情:
class command_coverage;
enum {SEQ_WRITE_16_BIT = 32'hBEEFFOOD, SEQ_READ_16_BIT = 32'hFACEFACE,
... } my_valid_commands
covergroup cg();
command_cp : coverpoint cmd {
bins valid_commands[] = each element of enum;
}
endgroup
...
endclass
或
bins valid_commands[] = my_valid_commands;
但是它没有按照我的意愿工作。
答案 0 :(得分:3)
可以做到:
command_cp : coverpoint my_valid_commands {
bins valid_commands[] = {[my_valid_commands.first:my_valid_commands.last]};
first
和last
是枚举的方法,它们分别返回第一个和最后一个值。然后将它们用作范围的一部分。
这是Mentor Questa的显示(其他模拟器可用-我的PC上安装了Questa):
这里是MCVE:
https://www.edaplayground.com/x/5rUu
module enum_cg;
enum {SEQ_WRITE_16_BIT, SEQ_READ_16_BIT} my_valid_commands;
covergroup cg();
command_cp : coverpoint my_valid_commands {
bins valid_commands[] = {[my_valid_commands.first:my_valid_commands.last]};
}
endgroup
cg cg0 = new;
initial begin
my_valid_commands = SEQ_WRITE_16_BIT;
cg0.sample;
end
endmodule