wavedrom / bitfield

:cake: bit field diagram renderer
MIT License
340 stars 26 forks source link

Attrs spanning multiple bits. #49

Open wmat opened 1 year ago

wmat commented 1 year ago

Is it possible for attrs to span multiple bits, such as the offsets are doing in this screenshot: Screenshot from 2023-01-09 15-40-46

drom commented 1 year ago

it is not possible right now. Looks like imm[12] and offset[12] carry the same semantic information in the picture? Would it make sense to do something like:

{reg: [
    {bits: 7,  name: 'opcode',    attr: 'BRANCH'},
    {bits: 5,  name: 'imm',       attr: 'offset[11|4:1]', type: 3},
    {bits: 3,  name: 'func3',     attr: ['BEQ', 'BNE', 'BLT', 'BLTU', 'BGE', 'BGEU'], type: 4},
    {bits: 5,  name: 'rs1',       attr: 'src1'},
    {bits: 5,  name: 'rs2',       attr: 'src2'},
    {bits: 7,  name: 'imm',       attr: 'offset[12|10:5]', type: 3}
]}

image ?

more examples: https://observablehq.com/@drom/wavedrom-bit-field-guide?collection=@drom/bitfield

drom commented 1 year ago

Or maybe something even more explicit: image

{reg: [
    {bits: 7,  name: 'opcode',    attr: 'BRANCH'},
    {bits: 1,  name: '[11]', type: 3},
    {bits: 1,  name: '[1]', type: 3},
    {bits: 1,  name: '[2]', type: 3},
    {bits: 1,  name: '[3]', type: 3},
    {bits: 1,  name: '[4]', type: 3},
    {bits: 3,  name: 'func3',     attr: ['BEQ', 'BNE', 'BLT', 'BLTU', 'BGE', 'BGEU'], type: 4},
    {bits: 5,  name: 'rs1',       attr: 'src1'},
    {bits: 5,  name: 'rs2',       attr: 'src2'},
    {bits: 1,  name: '[5]', type: 3},
    {bits: 1,  name: '[6]', type: 3},
    {bits: 1,  name: '[7]', type: 3},
    {bits: 1,  name: '[8]', type: 3},
    {bits: 1,  name: '[9]', type: 3},
    {bits: 1,  name: '[10]', type: 3},
    {bits: 1,  name: '[12]', type: 3}
]}