Skip to content
New issue

Have a question about this project? # for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “#”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? # to your account

Attrs spanning multiple bits. #49

Open
wmat opened this issue Jan 9, 2023 · 2 comments
Open

Attrs spanning multiple bits. #49

wmat opened this issue Jan 9, 2023 · 2 comments
Labels

Comments

@wmat
Copy link

wmat commented Jan 9, 2023

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
Copy link
Member

drom commented Feb 22, 2023

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
Copy link
Member

drom commented Feb 22, 2023

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}
]}

@drom drom added the question label Mar 10, 2023
# for free to join this conversation on GitHub. Already have an account? # to comment
Labels
Projects
None yet
Development

No branches or pull requests

2 participants