forked from HEL/circuiteria
Replaces the hard-coded 2pt padding used when placing port name labels. Configurable per element via port-name-padding on elmt (forwarded by block and group), defaulting to 2pt to preserve existing layout.
87 lines
2.2 KiB
Typst
87 lines
2.2 KiB
Typst
// Demonstrates ports on a group element.
|
|
// outside-port-names: true (default) — labels outside the group border
|
|
// outside-port-names: false — labels inside (block-style)
|
|
#import "/src/lib.typ": circuit, element, util, wire
|
|
|
|
#set page(width: auto, height: auto, margin: .5cm)
|
|
|
|
#circuit({
|
|
// --- Group with port labels INSIDE (outside-port-names: false) ---
|
|
element.group(
|
|
id: "cpu",
|
|
name: "CPU (labels outside)",
|
|
name-anchor: "north",
|
|
stroke: (dash: "dashed"),
|
|
fill: util.colors.yellow.lighten(60%),
|
|
padding: 1em,
|
|
port-name-padding: .5em,
|
|
outside-port-names: true,
|
|
ports: (
|
|
west: (
|
|
(id: "in1", name: "D1"),
|
|
(id: "in2", name: "D2"),
|
|
),
|
|
east: ((id: "out", name: "Q"),),
|
|
south: (
|
|
(id: "rst", name: "RST", vertical: true),
|
|
(id: "done", name: "DONE", vertical: true),
|
|
),
|
|
),
|
|
{
|
|
element.block(
|
|
id: "reg2",
|
|
w: 2.5,
|
|
h: 3,
|
|
x: 0,
|
|
y: 0,
|
|
fill: util.colors.green,
|
|
ports: (
|
|
west: ((id: "d1"), (id: "d2")),
|
|
east: ((id: "q"),),
|
|
north: ((id: "clk", clock: true),),
|
|
),
|
|
)
|
|
},
|
|
)
|
|
// --- Group with port labels INSIDE (outside-port-names: false) ---
|
|
element.group(
|
|
id: "cpu2",
|
|
name: "CPU (labels inside)",
|
|
name-anchor: "north",
|
|
stroke: (dash: "dashed"),
|
|
fill: util.colors.yellow.lighten(60%),
|
|
padding: 4em,
|
|
outside-port-names: false,
|
|
port-name-padding: 0.5em,
|
|
ports: (
|
|
west: (
|
|
(id: "in1", name: "D1"),
|
|
(id: "in2", name: "D2"),
|
|
),
|
|
east: ((id: "out", name: "Q"),),
|
|
south: (
|
|
(id: "rst", name: "RST", vertical: true),
|
|
(id: "done", name: "DONE", vertical: true),
|
|
),
|
|
),
|
|
{
|
|
element.block(
|
|
id: "reg2",
|
|
w: 2.5,
|
|
h: 3,
|
|
x: 10,
|
|
y: 0,
|
|
fill: util.colors.green,
|
|
ports: (
|
|
west: ((id: "d1"), (id: "d2")),
|
|
east: ((id: "q"),),
|
|
north: ((id: "clk", clock: true),),
|
|
),
|
|
)
|
|
},
|
|
)
|
|
wire.stub("cpu2-port-in1", "west", name: "A")
|
|
wire.stub("cpu2-port-in2", "west", name: "B")
|
|
wire.stub("cpu2-port-out", "east", name: "Q")
|
|
})
|