Skip to content
Permalink

Comparing changes

Choose two branches to see what’s changed or to start a new pull request. If you need to, you can also or learn more about diff comparisons.

Open a pull request

Create a new pull request by comparing changes across two branches. If you need to, you can also . Learn more about diff comparisons here.
base repository: azonenberg/openfpga
Failed to load repositories. Confirm that selected base ref is valid, then try again.
Loading
base: 9ad40e94a980
Choose a base ref
...
head repository: azonenberg/openfpga
Failed to load repositories. Confirm that selected head ref is valid, then try again.
Loading
compare: 670745ce0acd
Choose a head ref
  • 2 commits
  • 9 files changed
  • 1 contributor

Commits on Jun 24, 2017

  1. Copy the full SHA
    6d4a8ea View commit details
  2. Copy the full SHA
    670745c View commit details
Showing with 301 additions and 290 deletions.
  1. +36 −36 src/xc2bit/src/bitstream.rs
  2. +2 −2 src/xc2bit/src/crbit.rs
  3. +3 −3 src/xc2bit/src/errors.rs
  4. +9 −9 src/xc2bit/src/fb.rs
  5. +5 −5 src/xc2bit/src/iob.rs
  6. +2 −2 src/xc2bit/src/lib.rs
  7. +236 −225 src/xc2bit/src/mc.rs
  8. +7 −7 src/xc2bit/src/pla.rs
  9. +1 −1 src/xc2bit/src/zia.rs
72 changes: 36 additions & 36 deletions src/xc2bit/src/bitstream.rs
Original file line number Diff line number Diff line change
@@ -86,7 +86,7 @@ impl XC2Bitstream {
}

/// Processes a fuse array into a bitstream object
pub fn from_jed(fuses: &[bool], device: &str) -> Result<XC2Bitstream, XC2BitError> {
pub fn from_jed(fuses: &[bool], device: &str) -> Result<Self, XC2BitError> {
let device_combination = parse_part_name_string(device);
if device_combination.is_none() {
return Err(XC2BitError::BadDeviceName(device.to_owned()));
@@ -104,70 +104,70 @@ impl XC2Bitstream {
Ok(XC2Bitstream {
speed_grade: spd,
package: pkg,
bits: bits,
bits,
})
},
XC2Device::XC2C32A => {
let bits = read_32a_bitstream_logical(fuses)?;
Ok(XC2Bitstream {
speed_grade: spd,
package: pkg,
bits: bits,
bits,
})
},
XC2Device::XC2C64 => {
let bits = read_64_bitstream_logical(fuses)?;
Ok(XC2Bitstream {
speed_grade: spd,
package: pkg,
bits: bits,
bits,
})
},
XC2Device::XC2C64A => {
let bits = read_64a_bitstream_logical(fuses)?;
Ok(XC2Bitstream {
speed_grade: spd,
package: pkg,
bits: bits,
bits,
})
},
XC2Device::XC2C128 => {
let bits = read_128_bitstream_logical(fuses)?;
Ok(XC2Bitstream {
speed_grade: spd,
package: pkg,
bits: bits,
bits,
})
},
XC2Device::XC2C256 => {
let bits = read_256_bitstream_logical(fuses)?;
Ok(XC2Bitstream {
speed_grade: spd,
package: pkg,
bits: bits,
bits,
})
},
XC2Device::XC2C384 => {
let bits = read_384_bitstream_logical(fuses)?;
Ok(XC2Bitstream {
speed_grade: spd,
package: pkg,
bits: bits,
bits,
})
},
XC2Device::XC2C512 => {
let bits = read_512_bitstream_logical(fuses)?;
Ok(XC2Bitstream {
speed_grade: spd,
package: pkg,
bits: bits,
bits,
})
},
}
}

/// Processes a fuse array (in physical addressing) into a bitstream object
pub fn from_crbit(fuse_array: &FuseArray) -> Result<XC2Bitstream, XC2BitError> {
pub fn from_crbit(fuse_array: &FuseArray) -> Result<Self, XC2BitError> {
// FIXME: Can we guess the device type from the dimensions?
if fuse_array.dev_name_str.is_none() {
return Err(XC2BitError::BadDeviceName(String::from("")));
@@ -191,71 +191,71 @@ impl XC2Bitstream {
Ok(XC2Bitstream {
speed_grade: spd,
package: pkg,
bits: bits,
bits,
})
},
XC2Device::XC2C32A => {
let bits = read_32a_bitstream_physical(fuse_array)?;
Ok(XC2Bitstream {
speed_grade: spd,
package: pkg,
bits: bits,
bits,
})
},
XC2Device::XC2C64 => {
let bits = read_64_bitstream_physical(fuse_array)?;
Ok(XC2Bitstream {
speed_grade: spd,
package: pkg,
bits: bits,
bits,
})
},
XC2Device::XC2C64A => {
let bits = read_64a_bitstream_physical(fuse_array)?;
Ok(XC2Bitstream {
speed_grade: spd,
package: pkg,
bits: bits,
bits,
})
},
XC2Device::XC2C128 => {
let bits = read_128_bitstream_physical(fuse_array)?;
Ok(XC2Bitstream {
speed_grade: spd,
package: pkg,
bits: bits,
bits,
})
},
XC2Device::XC2C256 => {
let bits = read_256_bitstream_physical(fuse_array)?;
Ok(XC2Bitstream {
speed_grade: spd,
package: pkg,
bits: bits,
bits,
})
},
XC2Device::XC2C384 => {
let bits = read_384_bitstream_physical(fuse_array)?;
Ok(XC2Bitstream {
speed_grade: spd,
package: pkg,
bits: bits,
bits,
})
},
XC2Device::XC2C512 => {
let bits = read_512_bitstream_physical(fuse_array)?;
Ok(XC2Bitstream {
speed_grade: spd,
package: pkg,
bits: bits,
bits,
})
},
}
}

/// Construct a new blank bitstream of the given part
pub fn blank_bitstream(device: XC2Device, speed_grade: XC2Speed, package: XC2Package)
-> Result<XC2Bitstream, XC2BitError> {
-> Result<Self, XC2BitError> {

if !is_valid_part_combination(device, speed_grade, package) {
return Err(XC2BitError::BadDeviceName(format!("{}-{}-{}", device, speed_grade, package)));
@@ -264,8 +264,8 @@ impl XC2Bitstream {
match device {
XC2Device::XC2C32 => {
Ok(XC2Bitstream {
speed_grade: speed_grade,
package: package,
speed_grade,
package,
bits: XC2BitstreamBits::XC2C32 {
fb: [XC2BitstreamFB::default(); 2],
iobs: [XC2MCSmallIOB::default(); 32],
@@ -278,8 +278,8 @@ impl XC2Bitstream {
},
XC2Device::XC2C32A => {
Ok(XC2Bitstream {
speed_grade: speed_grade,
package: package,
speed_grade,
package,
bits: XC2BitstreamBits::XC2C32A {
fb: [XC2BitstreamFB::default(); 2],
iobs: [XC2MCSmallIOB::default(); 32],
@@ -294,8 +294,8 @@ impl XC2Bitstream {
},
XC2Device::XC2C64 => {
Ok(XC2Bitstream {
speed_grade: speed_grade,
package: package,
speed_grade,
package,
bits: XC2BitstreamBits::XC2C64 {
fb: [XC2BitstreamFB::default(); 4],
iobs: [XC2MCSmallIOB::default(); 64],
@@ -307,8 +307,8 @@ impl XC2Bitstream {
},
XC2Device::XC2C64A => {
Ok(XC2Bitstream {
speed_grade: speed_grade,
package: package,
speed_grade,
package,
bits: XC2BitstreamBits::XC2C64A {
fb: [XC2BitstreamFB::default(); 4],
iobs: [XC2MCSmallIOB::default(); 64],
@@ -322,8 +322,8 @@ impl XC2Bitstream {
},
XC2Device::XC2C128 => {
Ok(XC2Bitstream {
speed_grade: speed_grade,
package: package,
speed_grade,
package,
bits: XC2BitstreamBits::XC2C128 {
fb: [XC2BitstreamFB::default(); 8],
iobs: [XC2MCLargeIOB::default(); 100],
@@ -338,8 +338,8 @@ impl XC2Bitstream {
},
XC2Device::XC2C256 => {
Ok(XC2Bitstream {
speed_grade: speed_grade,
package: package,
speed_grade,
package,
bits: XC2BitstreamBits::XC2C256 {
fb: [XC2BitstreamFB::default(); 16],
iobs: [XC2MCLargeIOB::default(); 184],
@@ -354,8 +354,8 @@ impl XC2Bitstream {
},
XC2Device::XC2C384 => {
Ok(XC2Bitstream {
speed_grade: speed_grade,
package: package,
speed_grade,
package,
bits: XC2BitstreamBits::XC2C384 {
fb: [XC2BitstreamFB::default(); 24],
iobs: [XC2MCLargeIOB::default(); 240],
@@ -370,8 +370,8 @@ impl XC2Bitstream {
},
XC2Device::XC2C512 => {
Ok(XC2Bitstream {
speed_grade: speed_grade,
package: package,
speed_grade,
package,
bits: XC2BitstreamBits::XC2C512 {
fb: [XC2BitstreamFB::default(); 32],
iobs: [XC2MCLargeIOB::default(); 270],
@@ -413,7 +413,7 @@ pub struct XC2GlobalNets {

impl Default for XC2GlobalNets {
/// Returns a "default" global net configuration which has everything disabled.
fn default() -> XC2GlobalNets {
fn default() -> Self {
XC2GlobalNets {
gck_enable: [false; 3],
gsr_enable: false,
4 changes: 2 additions & 2 deletions src/xc2bit/src/crbit.rs
Original file line number Diff line number Diff line change
@@ -60,7 +60,7 @@ impl FuseArray {
}

/// Processes the given data and converts it into a `FuseArray` struct.
pub fn from_file_contents(in_bytes: &[u8]) -> Result<FuseArray, &'static str> {
pub fn from_file_contents(in_bytes: &[u8]) -> Result<Self, &'static str> {
// This capacity is approximate but close enough
let mut v = Vec::with_capacity(in_bytes.len());
let mut w = None;
@@ -108,7 +108,7 @@ impl FuseArray {
}

/// Constructs a new `FuseArray` object with the given dimensions and filled with 0s
pub fn from_dim(w: usize, h: usize) -> FuseArray {
pub fn from_dim(w: usize, h: usize) -> Self {
FuseArray {
w,
v: vec![false; w*h],
6 changes: 3 additions & 3 deletions src/xc2bit/src/errors.rs
Original file line number Diff line number Diff line change
@@ -91,13 +91,13 @@ impl fmt::Display for JedParserError {
}

impl From<str::Utf8Error> for JedParserError {
fn from(err: str::Utf8Error) -> JedParserError {
fn from(err: str::Utf8Error) -> Self {
JedParserError::InvalidUtf8(err)
}
}

impl From<num::ParseIntError> for JedParserError {
fn from(_: num::ParseIntError) -> JedParserError {
fn from(_: num::ParseIntError) -> Self {
JedParserError::InvalidCharacter
}
}
@@ -112,7 +112,7 @@ pub enum XC2BitError {
}

impl From<JedParserError> for XC2BitError {
fn from(err: JedParserError) -> XC2BitError {
fn from(err: JedParserError) -> Self {
XC2BitError::JedParseError(err)
}
}
18 changes: 9 additions & 9 deletions src/xc2bit/src/fb.rs
Original file line number Diff line number Diff line change
@@ -53,11 +53,11 @@ pub struct XC2BitstreamFB {
}

impl Clone for XC2BitstreamFB {
fn clone(&self) -> XC2BitstreamFB {*self}
fn clone(&self) -> Self {*self}
}

impl Default for XC2BitstreamFB {
fn default() -> XC2BitstreamFB {
fn default() -> Self {
XC2BitstreamFB {
and_terms: [XC2PLAAndTerm::default(); ANDTERMS_PER_FB],
or_terms: [XC2PLAOrTerm::default(); MCS_PER_FB],
@@ -360,7 +360,7 @@ impl XC2BitstreamFB {
/// Reads the crbit representation of the settings for this FB from the given `fuse_array`.
/// `device` must be the device type this FB was extracted from.
/// `fb` must be the index of this function block.
pub fn from_crbit(device: XC2Device, fb: u32, fuse_array: &FuseArray) -> Result<XC2BitstreamFB, XC2BitError> {
pub fn from_crbit(device: XC2Device, fb: u32, fuse_array: &FuseArray) -> Result<Self, XC2BitError> {
// ZIA
let mut zia_bits = [XC2ZIARowPiece::default(); INPUTS_PER_ANDTERM];
let (x, y) = zia_block_loc(device, fb);
@@ -509,9 +509,9 @@ impl XC2BitstreamFB {
}

Ok(XC2BitstreamFB {
and_terms: and_terms,
or_terms: or_terms,
zia_bits: zia_bits,
and_terms,
or_terms,
zia_bits,
ffs: ff_bits,
})
}
@@ -681,9 +681,9 @@ pub fn read_fb_logical(device: XC2Device, fuses: &[bool], fb: u32, fuse_base: us
}

Ok(XC2BitstreamFB {
and_terms: and_terms,
or_terms: or_terms,
zia_bits: zia_bits,
and_terms,
or_terms,
zia_bits,
ffs: ff_bits,
})
}
Loading