Type:

name: signed

TypeVector:

name: integer
base: signed
range:
- 31
- 0

Type:

name: void

Type:

name: bit

SystemT:

name: with_clocksI::T_
inputs:
- SignalI:
    name: clk
    type: bit
- SignalI:
    name: rst
    type: bit
outputs:
- SignalI:
    name: sig0
    type: bit
- SignalI:
    name: sig1
    type: bit
inouts: []
scope:
  Scope:
    name: ''
    scopes: []
    inners:
    - SignalI:
        name: ":0"
        type:
          TypeVector:
            name: ''
            base: bit
            range:
            - 30
            - 0
    - SignalI:
        name: ":1"
        type: bit
    - SignalI:
        name: ":2"
        type:
          TypeVector:
            name: ''
            base: bit
            range:
            - 30
            - 0
    - SignalI:
        name: ":3"
        type:
          TypeVector:
            name: ''
            base: bit
            range:
            - 30
            - 0
    - SignalI:
        name: ":4"
        type: bit
    systemIs: []
    connections:
    - Connection:
        left:
          RefName:
            type: bit
            ref:
              RefThis:
                type: void
            name: ":4"
        right:
          Binary:
            type:
              TypeVector:
                name: ''
                base: signed
                range:
                - 32
                - 0
            operator: "|"
            left:
              Binary:
                type:
                  TypeVector:
                    name: ''
                    base: signed
                    range:
                    - 32
                    - 0
                operator: "=="
                left:
                  RefName:
                    type:
                      TypeVector:
                        name: ''
                        base: bit
                        range:
                        - 30
                        - 0
                    ref:
                      RefThis:
                        type: void
                    name: ":2"
                right:
                  Value:
                    type:
                      TypeVector:
                        name: ''
                        base: signed
                        range:
                        - 32
                        - 0
                    content: 2
            right:
              Binary:
                type:
                  TypeVector:
                    name: ''
                    base: signed
                    range:
                    - 32
                    - 0
                operator: "=="
                left:
                  RefName:
                    type:
                      TypeVector:
                        name: ''
                        base: bit
                        range:
                        - 30
                        - 0
                    ref:
                      RefThis:
                        type: void
                    name: ":3"
                right:
                  Value:
                    type:
                      TypeVector:
                        name: ''
                        base: signed
                        range:
                        - 32
                        - 0
                    content: 2
    behaviors:
    - Behavior:
        events:
        - Event:
            type: posedge
            ref:
              RefName:
                type: bit
                ref:
                  RefThis:
                    type: void
                name: clk
        block:
          Block:
            mode: par
            name: ''
            inners: []
            statements:
            - If:
                condition:
                  RefName:
                    type: bit
                    ref:
                      RefThis:
                        type: void
                    name: rst
                'yes':
                  Block:
                    mode: par
                    name: ''
                    inners: []
                    statements:
                    - Transmit:
                        left:
                          RefName:
                            type:
                              TypeVector:
                                name: ''
                                base: bit
                                range:
                                - 30
                                - 0
                            ref:
                              RefThis:
                                type: void
                            name: ":0"
                        right:
                          Value:
                            type:
                              TypeVector:
                                name: ''
                                base: signed
                                range:
                                - 31
                                - 0
                            content: 1
                    - Transmit:
                        left:
                          RefName:
                            type: bit
                            ref:
                              RefThis:
                                type: void
                            name: ":1"
                        right:
                          Value:
                            type: integer
                            content: 0
                'no':
                  Block:
                    mode: par
                    name: ''
                    inners: []
                    statements:
                    - Transmit:
                        left:
                          RefName:
                            type:
                              TypeVector:
                                name: ''
                                base: bit
                                range:
                                - 30
                                - 0
                            ref:
                              RefThis:
                                type: void
                            name: ":0"
                        right:
                          Binary:
                            type:
                              TypeVector:
                                name: ''
                                base: signed
                                range:
                                - 32
                                - 0
                            operator: "+"
                            left:
                              RefName:
                                type:
                                  TypeVector:
                                    name: ''
                                    base: bit
                                    range:
                                    - 30
                                    - 0
                                ref:
                                  RefThis:
                                    type: void
                                name: ":0"
                            right:
                              Value:
                                type: integer
                                content: 1
                noifs:
                - - Binary:
                      type:
                        TypeVector:
                          name: ''
                          base: signed
                          range:
                          - 31
                          - 0
                      operator: "=="
                      left:
                        RefName:
                          type:
                            TypeVector:
                              name: ''
                              base: bit
                              range:
                              - 30
                              - 0
                          ref:
                            RefThis:
                              type: void
                          name: ":0"
                      right:
                        Value:
                          type: integer
                          content: 0
                  - Block:
                      mode: par
                      name: ''
                      inners: []
                      statements:
                      - Transmit:
                          left:
                            RefName:
                              type:
                                TypeVector:
                                  name: ''
                                  base: bit
                                  range:
                                  - 30
                                  - 0
                              ref:
                                RefThis:
                                  type: void
                              name: ":0"
                          right:
                            Value:
                              type:
                                TypeVector:
                                  name: ''
                                  base: signed
                                  range:
                                  - 31
                                  - 0
                              content: 1
                      - Transmit:
                          left:
                            RefName:
                              type: bit
                              ref:
                                RefThis:
                                  type: void
                              name: ":1"
                          right:
                            Unary:
                              type: bit
                              operator: "~"
                              child:
                                RefName:
                                  type: bit
                                  ref:
                                    RefThis:
                                      type: void
                                  name: ":1"
    - Behavior:
        events:
        - Event:
            type: posedge
            ref:
              RefName:
                type: bit
                ref:
                  RefThis:
                    type: void
                name: ":1"
        block:
          Block:
            mode: par
            name: ''
            inners: []
            statements:
            - If:
                condition:
                  RefName:
                    type: bit
                    ref:
                      RefThis:
                        type: void
                    name: rst
                'yes':
                  Block:
                    mode: par
                    name: ''
                    inners: []
                    statements:
                    - Transmit:
                        left:
                          RefName:
                            type: bit
                            ref:
                              RefThis:
                                type: void
                            name: sig0
                        right:
                          Value:
                            type: integer
                            content: 0
                'no':
                  Block:
                    mode: par
                    name: ''
                    inners: []
                    statements:
                    - Transmit:
                        left:
                          RefName:
                            type: bit
                            ref:
                              RefThis:
                                type: void
                            name: sig0
                        right:
                          Unary:
                            type: bit
                            operator: "~"
                            child:
                              RefName:
                                type: bit
                                ref:
                                  RefThis:
                                    type: void
                                name: sig0
                noifs: []
    - Behavior:
        events:
        - Event:
            type: posedge
            ref:
              RefName:
                type: bit
                ref:
                  RefThis:
                    type: void
                name: clk
        block:
          Block:
            mode: par
            name: ''
            inners: []
            statements:
            - If:
                condition:
                  Binary:
                    type:
                      TypeVector:
                        name: ''
                        base: signed
                        range:
                        - 0
                        - 31
                    operator: "=="
                    left:
                      Binary:
                        type:
                          TypeVector:
                            name: ''
                            base: bit
                            range:
                            - 0
                            - 30
                        operator: "|"
                        left:
                          RefName:
                            type: bit
                            ref:
                              RefThis:
                                type: void
                            name: rst
                        right:
                          RefName:
                            type:
                              TypeVector:
                                name: ''
                                base: bit
                                range:
                                - 30
                                - 0
                            ref:
                              RefThis:
                                type: void
                            name: ":2"
                    right:
                      Value:
                        type: integer
                        content: 0
                'yes':
                  Block:
                    mode: par
                    name: ''
                    inners: []
                    statements:
                    - Transmit:
                        left:
                          RefName:
                            type:
                              TypeVector:
                                name: ''
                                base: bit
                                range:
                                - 30
                                - 0
                            ref:
                              RefThis:
                                type: void
                            name: ":2"
                        right:
                          Value:
                            type:
                              TypeVector:
                                name: ''
                                base: signed
                                range:
                                - 32
                                - 0
                            content: 2
                'no': 
                noifs: []
    - Behavior:
        events:
        - Event:
            type: negedge
            ref:
              RefName:
                type: bit
                ref:
                  RefThis:
                    type: void
                name: clk
        block:
          Block:
            mode: par
            name: ''
            inners: []
            statements:
            - If:
                condition:
                  Binary:
                    type:
                      TypeVector:
                        name: ''
                        base: signed
                        range:
                        - 0
                        - 31
                    operator: "=="
                    left:
                      Binary:
                        type:
                          TypeVector:
                            name: ''
                            base: bit
                            range:
                            - 0
                            - 30
                        operator: "|"
                        left:
                          RefName:
                            type: bit
                            ref:
                              RefThis:
                                type: void
                            name: rst
                        right:
                          RefName:
                            type:
                              TypeVector:
                                name: ''
                                base: bit
                                range:
                                - 30
                                - 0
                            ref:
                              RefThis:
                                type: void
                            name: ":3"
                    right:
                      Value:
                        type: integer
                        content: 0
                'yes':
                  Block:
                    mode: par
                    name: ''
                    inners: []
                    statements:
                    - Transmit:
                        left:
                          RefName:
                            type:
                              TypeVector:
                                name: ''
                                base: bit
                                range:
                                - 30
                                - 0
                            ref:
                              RefThis:
                                type: void
                            name: ":3"
                        right:
                          Value:
                            type:
                              TypeVector:
                                name: ''
                                base: signed
                                range:
                                - 32
                                - 0
                            content: 2
                'no': 
                noifs: []
    - Behavior:
        events:
        - Event:
            type: posedge
            ref:
              RefName:
                type: bit
                ref:
                  RefThis:
                    type: void
                name: ":4"
        block:
          Block:
            mode: par
            name: ''
            inners: []
            statements:
            - If:
                condition:
                  RefName:
                    type: bit
                    ref:
                      RefThis:
                        type: void
                    name: rst
                'yes':
                  Block:
                    mode: par
                    name: ''
                    inners: []
                    statements:
                    - Transmit:
                        left:
                          RefName:
                            type: bit
                            ref:
                              RefThis:
                                type: void
                            name: sig1
                        right:
                          Value:
                            type: integer
                            content: 0
                'no':
                  Block:
                    mode: par
                    name: ''
                    inners: []
                    statements:
                    - Transmit:
                        left:
                          RefName:
                            type: bit
                            ref:
                              RefThis:
                                type: void
                            name: sig1
                        right:
                          Unary:
                            type: bit
                            operator: "~"
                            child:
                              RefName:
                                type: bit
                                ref:
                                  RefThis:
                                    type: void
                                name: sig1
                noifs: []