D
derrick_chi
Guest
Có ai everseen lỗi này ** Lỗi lệnh tên không hợp lệ "" trước khi?TCL tôi đã viết một tập lệnh để kiểm tra một số phần cứng mà tôi thiết kế và khi nào tôi chạy các tập lệnh mà tôi nhận được báo lỗi.Tôi
đã dán các lỗi và các tập lệnh ở dưới đây, xin được giúp đỡ bất kỳ apprieciated, thanks.
# ** Lỗi: không có sản phẩm nào lệnh tên ""
# Lỗi trong vĩ mô C: \ Engineering_Projects \ I2C \ TCL Testbenches \ i2c_testbench.tcl dòng 270
# Trống lệnh tên ""
# Trong khi thực hiện
# "[Write_i2c $ random_device $ register_ptr $ cntrl_reg $ byte_count]"
# ( ", Trong khi" cơ thể dòng 57)
# Invoked từ bên trong
# ", Trong khi ($ tranaction_count <100) (
#
# Toàn cầu wrdata_array
#
# Nếu ([kiểm tra-bin I2C_LOCK] == "1") (
#
# Đặt random_device [myRand 0 3]
# Đặt dev ... "Mã số:
làm i2c_wave.do
khởi động lại
thiết lập UserTimeUnit ns-lực lượng đông Master_CLK 1 0, 0) (10 ns 20-r
lực lượng vũ trang-rst 1 khoản tiền gửi
-lực lượng tiền gửi CLK_SPEED_SEL 0
-lực lượng tiền gửi I2C_CLK_GEN_W 0
lực lượng tiền gửi DATA_TO_MASTER-00
lực lượng tiền gửi CONTROL_INPUT-0000
-lực lượng tiền gửi i2c_cntrl_reg_w 0
lực lượng tiền gửi SDA-1
-lực lượng tiền gửi I2C_READ 0
-lực lượng tiền gửi I2C_WRITE 0chạy 40 nslực lượng tiền gửi-rst 0
chạy 40 nslực lượng tiền gửi CLK_SPEED_SEL-35
lực lượng vũ trang-I2C_CLK_GEN_W 1 khoản tiền gửichạy 20 ns-lực lượng tiền gửi CLK_SPEED_SEL 0
-lực lượng tiền gửi I2C_CLK_GEN_W 0chạy 20 nsthiết lập slave_addressr A5
thiết lập slave_addressw A4thiết lập eeprom_slave_addressr AB
thiết lập eeprom_slave_addressw AAthiết lập verilog_slave_addressr 21
thiết lập verilog_slave_addressw 20thiết lập german_slave_addressr C3
thiết lập german_slave_addressw C2thiết lập i2cs_rx_slave_addressr 23
thiết lập i2cs_rx_slave_addressw 22thiết lập read_adr_arry (0) $ slave_addressr
thiết lập read_adr_arry (1) $ eeprom_slave_addressr
thiết lập read_adr_arry (2) $ german_slave_addressr
thiết lập read_adr_arry (3) $ i2cs_rx_slave_addressr
thiết lập read_adr_arry (4) $ verilog_slave_addressrthiết lập write_adr_arry (0) $ slave_addressw
thiết lập write_adr_arry (1) $ eeprom_slave_addressw
thiết lập write_adr_arry (2) $ german_slave_addressw
thiết lập write_adr_arry (3) $ i2cs_rx_slave_addressw
thiết lập write_adr_arry (4) $ verilog_slave_addresswtoàn cầu wrdata_array
thiết lập wrdata_array (0) 0thiết lập instruction_array (0) 0
thiết lập instruction_array (1) 1proc myRand phút tối đa () (
thiết lập maxFactor [expr [expr $ tối đa 1] - $ phút]
thiết lập giá trị [expr int ([expr rand () * 100])]
thiết lập giá trị [expr [expr $ $% giá trị maxFactor] $ phút]
giá trị trả lại $
)proc myRand_hex (dec_min dec_max) (
thiết lập hex_maxFactor [expr [expr $ dec_max 1] - $ dec_min]
thiết lập dec_value [expr int ([expr rand () * 100])]
thiết lập dec_value [expr [expr $ dec_value% $ hex_maxFactor] $ dec_min]
thiết lập hex_value [định dạng% 02X $ dec_value]
return $ hex_value
)(proc write_i2c điện thoại registerptr cntrl_reg byte_count) (toàn cầu wrdata_arraytrong khi ([-kiểm tra tháng mười hai. I2C_BUSY] == 1) (20 chạy ns)lực lượng vũ trang-CONTROL_INPUT tiền đặt cọc $ cntrl_reg
lực lượng vũ trang-i2c_cntrl_reg_w 1 khoản tiền gửi
chạy 20 ns-lực lượng tiền gửi i2c_cntrl_reg_w 0
chạy 20 nsthiết lập write_count 0
thiết lập write_op "ghi vào"thiết lập loop_count [expr $ byte_count - 1]thiết lập loop_termination [expr $ loop_count / 4]chuyển đổi-chính xác - thiết bị $ (0 (echo "Những giao dịch hiện tại là $ byte_count byte viết thư cho PCA955 slave đăng ký bắt đầu từ $ registerptr")
1 (echo "Những giao dịch hiện tại là $ byte_count byte viết thư cho EEPROM slave đăng ký bắt đầu từ $ registerptr")
2 (echo "Những giao dịch hiện tại là $ byte_count byte Tiếng Đức viết thư cho slave đăng ký bắt đầu từ $ registerptr")
3 (echo "Những giao dịch hiện tại là $ byte_count byte viết thư cho I2CS_RX slave đăng ký bắt đầu từ $ registerptr")
4 (echo "Những giao dịch hiện tại là $ byte_count byte viết thư cho VERILOG slave đăng ký bắt đầu từ $ registerptr")
mặc định (báo lỗi "$ byte_count này không phải là một địa chỉ được gọi điện thoại")
)trong khi write_count ($ <$ loop_termination) (nếu ([-kiểm tra tháng mười hai. I2C_BUSY] == 0) (-lực lượng tiền gửi CONTROL_INPUT $ wrdata_array ($ write_count)
lực lượng vũ trang-I2C_WRITE 1 khoản tiền gửi
chạy 20 ns-lực lượng tiền gửi I2C_WRITE 0
chạy 20 nsincr write_count) Else (-lực lượng tiền gửi I2C_WRITE 0
chạy 20 ns
)
)-lực lượng tiền gửi I2C_WRITE 0
chạy 20 ns)(proc read_i2c điện thoại registerptr cntrl_reg byte_count) (toàn cầu wrdata_arraytrong khi ([-kiểm tra tháng mười hai. I2C_BUSY] == 1) (20 chạy ns)lực lượng vũ trang-CONTROL_INPUT tiền đặt cọc $ cntrl_reg
lực lượng vũ trang-i2c_cntrl_reg_w 1 khoản tiền gửi
chạy 20 ns
-lực lượng tiền gửi i2c_cntrl_reg_w 0thiết lập read_count 0thiết lập read_op "đọc từ"chuyển đổi-chính xác - thiết bị $ (0 (echo "Những giao dịch hiện tại là $ byte_count byte đọc từ slave PCA955 đăng ký bắt đầu từ $ registerptr")
1 (echo "Những giao dịch hiện tại là $ byte_count byte đọc từ EEPROM slave đăng ký bắt đầu từ $ registerptr")
2 (echo "Những giao dịch hiện tại là $ byte_count byte đọc từ Tiếng Đức slave đăng ký bắt đầu từ $ registerptr")
3 (echo "Những giao dịch hiện tại là $ byte_count byte đọc từ slave I2CS_RX đăng ký bắt đầu từ $ registerptr")
4 (echo "Những giao dịch hiện tại là $ byte_count byte đọc từ VERILOG slave đăng ký bắt đầu từ $ registerptr")
mặc định (báo lỗi "$ byte_count này không phải là một địa chỉ được gọi điện thoại")
)trong khi $ (read_count <= [expr $ byte_count / 4]) (nếu ([-kiểm tra tháng mười hai. I2C_DATA_RDY] == 1) (lực lượng vũ trang-I2C_READ 1 khoản tiền gửi
chạy 20 ns
-lực lượng tiền gửi I2C_READ 0
chạy 20 nsnếu ([kiểm tra-hex DATA_FROM_SLAVE]! = $ wrdata_array ($ read_count) ()báo lỗi "Dữ liệu không phù hợp, dữ liệu đã được bằng văn bản đã được $ wrdata_array ($ read_count), bạn đã trở lại [kiểm tra-hex DATA_FROM_SLAVE]") Else (echo "Đọc giao dịch thành công"
)incr read_count) Else (-lực lượng tiền gửi I2C_READ 0
chạy 20 ns
)
)-lực lượng tiền gửi I2C_READ 0
chạy 20 ns
)thiết lập tranaction_count 0
thiết lập write_count 0
thiết lập regcount 0thiết lập pcslave_adr_count 0
thiết lập eepromslave_adr_count 0
thiết lập verilogslave_adr_count 0
thiết lập germanslave_adr_count 0
thiết lập i2cs_rx_adr_count 0thiết lập hexcount [định dạng% 02X $ regcount]trong khi $ (tranaction_count <100) (toàn cầu wrdata_arraynếu ([kiểm tra-bin I2C_LOCK] == "1") (thiết lập random_device [myRand 0 3]
thiết lập device_address $ write_adr_arry ($ random_device)chuyển đổi-chính xác - $ random_device (0 (đặt byte_count [myRand 3 4])
(1 đặt byte_count [myRand 3 2047])
2 (đặt byte_count [myRand 3 4])
3 (đặt byte_count [myRand 3 10])
4 (đặt byte_count [myRand 3 4])
mặc định (lỗi)
)thiết lập timeout_value [định dạng% 1X 15]thiết lập cntrl_reg $ device_address
append cntrl_reg $ timeout_value
append cntrl_reg [định dạng% 1X $ byte_count]thiết lập array_byte_count [expr $ byte_count - 1]
thiết lập array_sub_count 0
thiết lập array_index 0chuyển đổi-chính xác - $ random_device (0 (đặt register_ptr [myRand_hex 2 3])
(1 đặt register_ptr [myRand_hex 2 2047])
2 (đặt register_ptr [myRand_hex 2 3])
3 đặt register_ptr (00)
4 (đặt register_ptr [myRand_hex 2 15])
mặc định (lỗi)
)thiết lập wrdata_array ($ array_index) $ register_ptrtrong khi $ (array_byte_count! = 0) (nếu array_sub_count == $ (3) (incr array_index) Else (append wrdata_array ($ array_index) [myRand_hex 1 255]
thiết lập array_byte_count [expr $ array_byte_count - 1]
incr array_sub_count
))[write_i2c $ random_device $ register_ptr $ cntrl_reg $ byte_count]
[read_i2c $ random_device $ register_ptr $ cntrl_reg $ byte_count]incr tranaction_count
chạy 20 ns
)chạy 200 ns
)
đã dán các lỗi và các tập lệnh ở dưới đây, xin được giúp đỡ bất kỳ apprieciated, thanks.
# ** Lỗi: không có sản phẩm nào lệnh tên ""
# Lỗi trong vĩ mô C: \ Engineering_Projects \ I2C \ TCL Testbenches \ i2c_testbench.tcl dòng 270
# Trống lệnh tên ""
# Trong khi thực hiện
# "[Write_i2c $ random_device $ register_ptr $ cntrl_reg $ byte_count]"
# ( ", Trong khi" cơ thể dòng 57)
# Invoked từ bên trong
# ", Trong khi ($ tranaction_count <100) (
#
# Toàn cầu wrdata_array
#
# Nếu ([kiểm tra-bin I2C_LOCK] == "1") (
#
# Đặt random_device [myRand 0 3]
# Đặt dev ... "Mã số:
làm i2c_wave.do
khởi động lại
thiết lập UserTimeUnit ns-lực lượng đông Master_CLK 1 0, 0) (10 ns 20-r
lực lượng vũ trang-rst 1 khoản tiền gửi
-lực lượng tiền gửi CLK_SPEED_SEL 0
-lực lượng tiền gửi I2C_CLK_GEN_W 0
lực lượng tiền gửi DATA_TO_MASTER-00
lực lượng tiền gửi CONTROL_INPUT-0000
-lực lượng tiền gửi i2c_cntrl_reg_w 0
lực lượng tiền gửi SDA-1
-lực lượng tiền gửi I2C_READ 0
-lực lượng tiền gửi I2C_WRITE 0chạy 40 nslực lượng tiền gửi-rst 0
chạy 40 nslực lượng tiền gửi CLK_SPEED_SEL-35
lực lượng vũ trang-I2C_CLK_GEN_W 1 khoản tiền gửichạy 20 ns-lực lượng tiền gửi CLK_SPEED_SEL 0
-lực lượng tiền gửi I2C_CLK_GEN_W 0chạy 20 nsthiết lập slave_addressr A5
thiết lập slave_addressw A4thiết lập eeprom_slave_addressr AB
thiết lập eeprom_slave_addressw AAthiết lập verilog_slave_addressr 21
thiết lập verilog_slave_addressw 20thiết lập german_slave_addressr C3
thiết lập german_slave_addressw C2thiết lập i2cs_rx_slave_addressr 23
thiết lập i2cs_rx_slave_addressw 22thiết lập read_adr_arry (0) $ slave_addressr
thiết lập read_adr_arry (1) $ eeprom_slave_addressr
thiết lập read_adr_arry (2) $ german_slave_addressr
thiết lập read_adr_arry (3) $ i2cs_rx_slave_addressr
thiết lập read_adr_arry (4) $ verilog_slave_addressrthiết lập write_adr_arry (0) $ slave_addressw
thiết lập write_adr_arry (1) $ eeprom_slave_addressw
thiết lập write_adr_arry (2) $ german_slave_addressw
thiết lập write_adr_arry (3) $ i2cs_rx_slave_addressw
thiết lập write_adr_arry (4) $ verilog_slave_addresswtoàn cầu wrdata_array
thiết lập wrdata_array (0) 0thiết lập instruction_array (0) 0
thiết lập instruction_array (1) 1proc myRand phút tối đa () (
thiết lập maxFactor [expr [expr $ tối đa 1] - $ phút]
thiết lập giá trị [expr int ([expr rand () * 100])]
thiết lập giá trị [expr [expr $ $% giá trị maxFactor] $ phút]
giá trị trả lại $
)proc myRand_hex (dec_min dec_max) (
thiết lập hex_maxFactor [expr [expr $ dec_max 1] - $ dec_min]
thiết lập dec_value [expr int ([expr rand () * 100])]
thiết lập dec_value [expr [expr $ dec_value% $ hex_maxFactor] $ dec_min]
thiết lập hex_value [định dạng% 02X $ dec_value]
return $ hex_value
)(proc write_i2c điện thoại registerptr cntrl_reg byte_count) (toàn cầu wrdata_arraytrong khi ([-kiểm tra tháng mười hai. I2C_BUSY] == 1) (20 chạy ns)lực lượng vũ trang-CONTROL_INPUT tiền đặt cọc $ cntrl_reg
lực lượng vũ trang-i2c_cntrl_reg_w 1 khoản tiền gửi
chạy 20 ns-lực lượng tiền gửi i2c_cntrl_reg_w 0
chạy 20 nsthiết lập write_count 0
thiết lập write_op "ghi vào"thiết lập loop_count [expr $ byte_count - 1]thiết lập loop_termination [expr $ loop_count / 4]chuyển đổi-chính xác - thiết bị $ (0 (echo "Những giao dịch hiện tại là $ byte_count byte viết thư cho PCA955 slave đăng ký bắt đầu từ $ registerptr")
1 (echo "Những giao dịch hiện tại là $ byte_count byte viết thư cho EEPROM slave đăng ký bắt đầu từ $ registerptr")
2 (echo "Những giao dịch hiện tại là $ byte_count byte Tiếng Đức viết thư cho slave đăng ký bắt đầu từ $ registerptr")
3 (echo "Những giao dịch hiện tại là $ byte_count byte viết thư cho I2CS_RX slave đăng ký bắt đầu từ $ registerptr")
4 (echo "Những giao dịch hiện tại là $ byte_count byte viết thư cho VERILOG slave đăng ký bắt đầu từ $ registerptr")
mặc định (báo lỗi "$ byte_count này không phải là một địa chỉ được gọi điện thoại")
)trong khi write_count ($ <$ loop_termination) (nếu ([-kiểm tra tháng mười hai. I2C_BUSY] == 0) (-lực lượng tiền gửi CONTROL_INPUT $ wrdata_array ($ write_count)
lực lượng vũ trang-I2C_WRITE 1 khoản tiền gửi
chạy 20 ns-lực lượng tiền gửi I2C_WRITE 0
chạy 20 nsincr write_count) Else (-lực lượng tiền gửi I2C_WRITE 0
chạy 20 ns
)
)-lực lượng tiền gửi I2C_WRITE 0
chạy 20 ns)(proc read_i2c điện thoại registerptr cntrl_reg byte_count) (toàn cầu wrdata_arraytrong khi ([-kiểm tra tháng mười hai. I2C_BUSY] == 1) (20 chạy ns)lực lượng vũ trang-CONTROL_INPUT tiền đặt cọc $ cntrl_reg
lực lượng vũ trang-i2c_cntrl_reg_w 1 khoản tiền gửi
chạy 20 ns
-lực lượng tiền gửi i2c_cntrl_reg_w 0thiết lập read_count 0thiết lập read_op "đọc từ"chuyển đổi-chính xác - thiết bị $ (0 (echo "Những giao dịch hiện tại là $ byte_count byte đọc từ slave PCA955 đăng ký bắt đầu từ $ registerptr")
1 (echo "Những giao dịch hiện tại là $ byte_count byte đọc từ EEPROM slave đăng ký bắt đầu từ $ registerptr")
2 (echo "Những giao dịch hiện tại là $ byte_count byte đọc từ Tiếng Đức slave đăng ký bắt đầu từ $ registerptr")
3 (echo "Những giao dịch hiện tại là $ byte_count byte đọc từ slave I2CS_RX đăng ký bắt đầu từ $ registerptr")
4 (echo "Những giao dịch hiện tại là $ byte_count byte đọc từ VERILOG slave đăng ký bắt đầu từ $ registerptr")
mặc định (báo lỗi "$ byte_count này không phải là một địa chỉ được gọi điện thoại")
)trong khi $ (read_count <= [expr $ byte_count / 4]) (nếu ([-kiểm tra tháng mười hai. I2C_DATA_RDY] == 1) (lực lượng vũ trang-I2C_READ 1 khoản tiền gửi
chạy 20 ns
-lực lượng tiền gửi I2C_READ 0
chạy 20 nsnếu ([kiểm tra-hex DATA_FROM_SLAVE]! = $ wrdata_array ($ read_count) ()báo lỗi "Dữ liệu không phù hợp, dữ liệu đã được bằng văn bản đã được $ wrdata_array ($ read_count), bạn đã trở lại [kiểm tra-hex DATA_FROM_SLAVE]") Else (echo "Đọc giao dịch thành công"
)incr read_count) Else (-lực lượng tiền gửi I2C_READ 0
chạy 20 ns
)
)-lực lượng tiền gửi I2C_READ 0
chạy 20 ns
)thiết lập tranaction_count 0
thiết lập write_count 0
thiết lập regcount 0thiết lập pcslave_adr_count 0
thiết lập eepromslave_adr_count 0
thiết lập verilogslave_adr_count 0
thiết lập germanslave_adr_count 0
thiết lập i2cs_rx_adr_count 0thiết lập hexcount [định dạng% 02X $ regcount]trong khi $ (tranaction_count <100) (toàn cầu wrdata_arraynếu ([kiểm tra-bin I2C_LOCK] == "1") (thiết lập random_device [myRand 0 3]
thiết lập device_address $ write_adr_arry ($ random_device)chuyển đổi-chính xác - $ random_device (0 (đặt byte_count [myRand 3 4])
(1 đặt byte_count [myRand 3 2047])
2 (đặt byte_count [myRand 3 4])
3 (đặt byte_count [myRand 3 10])
4 (đặt byte_count [myRand 3 4])
mặc định (lỗi)
)thiết lập timeout_value [định dạng% 1X 15]thiết lập cntrl_reg $ device_address
append cntrl_reg $ timeout_value
append cntrl_reg [định dạng% 1X $ byte_count]thiết lập array_byte_count [expr $ byte_count - 1]
thiết lập array_sub_count 0
thiết lập array_index 0chuyển đổi-chính xác - $ random_device (0 (đặt register_ptr [myRand_hex 2 3])
(1 đặt register_ptr [myRand_hex 2 2047])
2 (đặt register_ptr [myRand_hex 2 3])
3 đặt register_ptr (00)
4 (đặt register_ptr [myRand_hex 2 15])
mặc định (lỗi)
)thiết lập wrdata_array ($ array_index) $ register_ptrtrong khi $ (array_byte_count! = 0) (nếu array_sub_count == $ (3) (incr array_index) Else (append wrdata_array ($ array_index) [myRand_hex 1 255]
thiết lập array_byte_count [expr $ array_byte_count - 1]
incr array_sub_count
))[write_i2c $ random_device $ register_ptr $ cntrl_reg $ byte_count]
[read_i2c $ random_device $ register_ptr $ cntrl_reg $ byte_count]incr tranaction_count
chạy 20 ns
)chạy 200 ns
)