Skip to content

Commit 43a9506

Browse files
committed
types: use newtypes for bitrect coords.
1 parent c429ff9 commit 43a9506

File tree

263 files changed

+1213
-1107
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

263 files changed

+1213
-1107
lines changed

docgen/src/bsdata.rs

Lines changed: 19 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,11 @@ use std::fmt::Write;
33

44
use indexmap::IndexMap;
55
use itertools::Itertools;
6+
use prjcombine_entity::{EntityId, EntityVec};
67
use prjcombine_types::bitvec::BitVec;
7-
use prjcombine_types::bsdata::{BsData, DbValue, Tile, TileBit, TileItemKind};
8+
use prjcombine_types::bsdata::{
9+
BsData, DbValue, RectBitId, RectFrameId, Tile, TileBit, TileItemKind,
10+
};
811

912
use crate::DocgenContext;
1013

@@ -28,17 +31,17 @@ pub fn gen_tile(
2831
tile: &Tile,
2932
orientation: TileOrientation,
3033
) {
31-
let mut dims: Vec<(usize, usize)> = vec![];
34+
let mut dims: EntityVec<_, (usize, usize)> = EntityVec::new();
3235
let mut reverse: HashMap<_, Vec<_>> = HashMap::new();
3336
let mut buf = String::new();
3437
let mut item_data: IndexMap<_, Vec<_>> = IndexMap::new();
3538
for (iname, item) in &tile.items {
3639
for (bidx, &bit) in item.bits.iter().enumerate() {
37-
while bit.tile >= dims.len() {
40+
while bit.rect.to_idx() >= dims.len() {
3841
dims.push((0, 0));
3942
}
40-
dims[bit.tile].0 = std::cmp::max(dims[bit.tile].0, bit.frame + 1);
41-
dims[bit.tile].1 = std::cmp::max(dims[bit.tile].1, bit.bit + 1);
43+
dims[bit.rect].0 = std::cmp::max(dims[bit.rect].0, bit.frame.to_idx() + 1);
44+
dims[bit.rect].1 = std::cmp::max(dims[bit.rect].1, bit.bit.to_idx() + 1);
4245
let (bidx, invert) = if let TileItemKind::BitVec { ref invert } = item.kind {
4346
(
4447
if invert.len() == 1 { None } else { Some(bidx) },
@@ -54,19 +57,19 @@ pub fn gen_tile(
5457
.or_default()
5558
.push((iname, &item.bits));
5659
}
57-
for (tidx, &(num_frames, num_bits)) in dims.iter().enumerate() {
60+
for (rect, &(num_frames, num_bits)) in &dims {
5861
let frames = if orientation.flip_frame {
59-
Vec::from_iter((0..num_frames).rev())
62+
Vec::from_iter((0..num_frames).map(RectFrameId::from_idx).rev())
6063
} else {
61-
Vec::from_iter(0..num_frames)
64+
Vec::from_iter((0..num_frames).map(RectFrameId::from_idx))
6265
};
6366
let bits = if orientation.flip_bit {
64-
Vec::from_iter((0..num_bits).rev())
67+
Vec::from_iter((0..num_bits).map(RectBitId::from_idx).rev())
6568
} else {
66-
Vec::from_iter(0..num_bits)
69+
Vec::from_iter((0..num_bits).map(RectBitId::from_idx))
6770
};
6871
writeln!(buf, r#"<div class="table-wrapper"><table>"#).unwrap();
69-
writeln!(buf, r#"<caption>{dbname} {tname} bittile {tidx}</caption>"#).unwrap();
72+
writeln!(buf, r#"<caption>{dbname} {tname} rect {rect}</caption>"#).unwrap();
7073
writeln!(buf, r#"<thead>"#).unwrap();
7174
match orientation.frame_direction {
7275
FrameDirection::Horizontal => {
@@ -97,9 +100,9 @@ pub fn gen_tile(
97100
writeln!(buf, r#"</thead>"#).unwrap();
98101
writeln!(buf, r#"<tbody>"#).unwrap();
99102
let emit_bit = |buf: &mut String, tbit: TileBit| {
100-
let TileBit { tile, frame, bit } = tbit;
103+
let TileBit { rect, frame, bit } = tbit;
101104
if let Some(items) = reverse.get(&tbit) {
102-
writeln!(buf, r#"<td title="{tile}.{frame}.{bit}">"#).unwrap();
105+
writeln!(buf, r#"<td title="{rect}.{frame}.{bit}">"#).unwrap();
103106
for &(iname, bidx, invert) in items {
104107
let inv = if invert { "~" } else { "" };
105108
let bidx = if let Some(bidx) = bidx {
@@ -123,14 +126,7 @@ pub fn gen_tile(
123126
for &frame in &frames {
124127
writeln!(buf, r#"<tr><td>{frame}</td>"#).unwrap();
125128
for &bit in &bits {
126-
emit_bit(
127-
&mut buf,
128-
TileBit {
129-
tile: tidx,
130-
frame,
131-
bit,
132-
},
133-
);
129+
emit_bit(&mut buf, TileBit { rect, frame, bit });
134130
}
135131
writeln!(buf, r#"</tr>"#).unwrap();
136132
}
@@ -139,14 +135,7 @@ pub fn gen_tile(
139135
for &bit in &bits {
140136
writeln!(buf, r#"<tr><td>{bit}</td>"#).unwrap();
141137
for &frame in &frames {
142-
emit_bit(
143-
&mut buf,
144-
TileBit {
145-
tile: tidx,
146-
frame,
147-
bit,
148-
},
149-
);
138+
emit_bit(&mut buf, TileBit { rect, frame, bit });
150139
}
151140
writeln!(buf, r#"</tr>"#).unwrap();
152141
}
@@ -168,7 +157,7 @@ pub fn gen_tile(
168157
writeln!(
169158
buf,
170159
"<th>{tile}.{frame}.{bit}</th>",
171-
tile = bit.tile,
160+
tile = bit.rect.to_idx(),
172161
frame = bit.frame,
173162
bit = bit.bit
174163
)

docgen/src/coolrunner2.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,8 @@ use std::{collections::HashMap, fmt::Write};
33
use indexmap::IndexSet;
44
use itertools::Itertools;
55
use prjcombine_coolrunner2::{BankId, BondPad, BsLayout, Database};
6-
use prjcombine_types::cpld::IoCoord;
76
use prjcombine_entity::{EntityId, EntityPartVec};
7+
use prjcombine_types::cpld::IoCoord;
88

99
use crate::{
1010
DocgenContext,

docgen/src/xc9500.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,8 @@ use std::{collections::HashMap, fmt::Write};
22

33
use indexmap::IndexSet;
44
use itertools::Itertools;
5-
use prjcombine_xc9500::{BankId, BondPad, ChipKind, Database};
65
use prjcombine_entity::{EntityId, EntityPartVec};
6+
use prjcombine_xc9500::{BankId, BondPad, ChipKind, Database};
77

88
use crate::{
99
DocgenContext,

docgen/src/xpla3.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,12 +2,12 @@ use std::{collections::HashMap, fmt::Write};
22

33
use indexmap::IndexSet;
44
use itertools::Itertools;
5+
use prjcombine_entity::{EntityId, EntityPartVec};
56
use prjcombine_types::{
67
bsdata::{Tile, TileItemKind},
78
cpld::{ClusterId, MacrocellCoord},
89
};
910
use prjcombine_xpla3::{BondPad, Database};
10-
use prjcombine_entity::{EntityId, EntityPartVec};
1111

1212
use crate::{
1313
DocgenContext,

public/coolrunner2/src/bin/coolrunner2_as.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,13 +2,13 @@ use std::{collections::BTreeMap, error::Error, fs::read_to_string, path::PathBuf
22

33
use clap::{Arg, Command, value_parser};
44
use prjcombine_coolrunner2::{Chip, Database};
5+
use prjcombine_entity::EntityId;
56
use prjcombine_jed::JedFile;
67
use prjcombine_types::{
78
bitvec::BitVec,
89
bsdata::{Tile, TileItemKind},
910
cpld::{BlockId, IoCoord, MacrocellCoord, MacrocellId},
1011
};
11-
use prjcombine_entity::EntityId;
1212

1313
struct Bitstream {
1414
fbs: Vec<FbData>,

public/coolrunner2/src/bin/coolrunner2_dis.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,13 +2,13 @@ use std::{collections::BTreeMap, error::Error, path::PathBuf};
22

33
use clap::{Arg, Command, value_parser};
44
use prjcombine_coolrunner2::{Chip, Database};
5+
use prjcombine_entity::EntityId;
56
use prjcombine_jed::{JedFile, JedParserOptions};
67
use prjcombine_types::{
78
bitvec::BitVec,
89
bsdata::{Tile, TileItemKind},
910
cpld::{BlockId, IoCoord, MacrocellCoord, MacrocellId},
1011
};
11-
use prjcombine_entity::EntityId;
1212

1313
struct Bitstream {
1414
fbs: Vec<FbData>,

public/coolrunner2/src/lib.rs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,16 +2,16 @@ use std::{collections::BTreeMap, error::Error, fs::File, path::Path};
22

33
use bincode::{Decode, Encode};
44
use jzon::JsonValue;
5+
use prjcombine_entity::{
6+
EntityId, EntityIds, EntityVec,
7+
id::{EntityIdU8, EntityTag},
8+
};
59
use prjcombine_types::{
610
bsdata::Tile,
711
cpld::{BlockId, IoCoord, IpadId, MacrocellCoord},
812
db::{BondId, ChipId, SpeedId},
913
speed::Speed,
1014
};
11-
use prjcombine_entity::{
12-
EntityId, EntityIds, EntityVec,
13-
id::{EntityIdU8, EntityTag},
14-
};
1515

1616
pub struct BankTag;
1717
impl EntityTag for BankTag {

public/ecp/src/bscan.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
11
use std::collections::{BTreeMap, BTreeSet};
22

3+
use prjcombine_entity::EntityId;
34
use prjcombine_interconnect::{
45
dir::DirV,
56
grid::{EdgeIoCoord, TileIobId},
67
};
78
use prjcombine_types::bscan::{BScanBuilder, BScanPad};
8-
use prjcombine_entity::EntityId;
99

1010
use crate::{
1111
bond::{BondPad, CfgPad, SerdesPad},

public/ecp/src/chip.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,11 @@ use std::{collections::BTreeMap, fmt::Display};
22

33
use bincode::{Decode, Encode};
44
use jzon::JsonValue;
5+
use prjcombine_entity::{EntityId, EntityVec};
56
use prjcombine_interconnect::{
67
dir::{Dir, DirH, DirHV, DirV},
78
grid::{BelCoord, CellCoord, ColId, DieId, EdgeIoCoord, RowId, TileIobId},
89
};
9-
use prjcombine_entity::{EntityId, EntityVec};
1010

1111
use crate::bels;
1212

public/ecp/src/db.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,12 +2,12 @@ use std::{error::Error, fs::File, path::Path};
22

33
use bincode::{Decode, Encode};
44
use jzon::JsonValue;
5+
use prjcombine_entity::{EntityId, EntityMap, EntitySet, EntityVec};
56
use prjcombine_interconnect::db::IntDb;
67
use prjcombine_types::{
78
bsdata::BsData,
89
db::{BondId, ChipId, DevBondId, DevSpeedId, DeviceCombo},
910
};
10-
use prjcombine_entity::{EntityId, EntityMap, EntitySet, EntityVec};
1111

1212
use crate::{bond::Bond, chip::Chip};
1313

0 commit comments

Comments
 (0)