Opening Period(未清期间)

本文解析了制造资源计划(MRP)中“未清期间”的概念及其作用,并通过实例说明了计划订单如何转换为采购申请的过程。重点介绍了未清期间在计划边际码中的设置方式及其对于计划与采购申请之间的缓冲作用。

跑MRP的时候,就“创建采购申请”有三种选择,1全为采购申请,2未清期间的采购申请,3全为计划订单。“未清期间”在“计划边际码”中设定(SchedMargin key,IMG:Production -> MRP -> Plan -> 计划和生产参数 -> 定义浮点 ),其解释为:

The number of working days between the date that the order is created and the planned start date. This time is available for the MRP controller to convert a planned order into a purchase requisition or a production order.

也就是计划订单转采购申请/生产订单的提前时间。

以下是个例子,今天是2006/06/13,物料A的需求日期2006/07/02,计划交货时间12天,收货处理时间1天。当未清期间设为5天的时候,如图:

PlanOrder 

注意到订单收货开始日期到完成日期,共12天(不含本日)。计划转换日期2006/06/14,正好跟订单开始日期相隔5天(也不含本日),这就是“未清期间”。

PurchaseRequisitions 

如果未清期间设为6天,由于计划计划转换日期为当天(或者说运行MRP的日期,落在计划订单的未清期间内),因此计划订单已经自动转化为采购申请。

未清期间的作用在于:在计划和采购申请/生产订单间提供一个缓冲的时间。这跟下达时间作用相仿,因此它们都在计划边际码中维护。计划员可以对落在未清期间的计划订单,进行批量转换(MD15/CO41)。

我想,有必要重新理清计划到采购的流程,方好理解未清期间的真正意义。

我简化了一下代码set RUNREGRESSION 1 # 全局日志函数 proc log_info {message log_file} { puts $log_file "[clock format [clock seconds]] - $message" } # 定义通用的测试用例执行过程,接受macro_name和log_file参数 proc run_test_case {macro_name log_file} { # 记录测试开始信息 log_info "Running test case: $macro_name" $log_file # 初始化测试结果为成功 set test_result "Passed" # 执行具体的测试逻辑 if {[catch { switch -exact -- $macro_name { "CYCLE_PERIOD_TESTCASE" { vsim -c -novopt work.tb_top -t ps -sva run 20ms log_info "$macro_name: Test completed successfully." $log_file } "UNBIAS_TESTCASE" { vsim -c -novopt work.tb_top -t ps -sva run 20ms log_info "$macro_name: Test completed successfully." $log_file } default { error "Unsupported test case: $macro_name" } } } result]} { # 测试失败,记录错误信息 log_info "Error running test case: $result" $log_file puts "Error running test case '$macro_name': $result" set test_result "Failed" } # 记录测试完成状态 if {$test_result == "Passed"} { log_info "$macro_name: Test completed successfully." $log_file } else { log_info "$macro_name: Test failed. Please check the logs." $log_file } } while {$RUNREGRESSION} { # 检查并打开文件列表 if {[catch {open "filelist.v" r} f]} { puts "Error opening filelist.v" exit 1 } # 遍历文件中的每一行 while {[gets $f line] != -1} { # 去除行首尾的空白字符 set line [string trim $line] if {$line eq ""} { continue } ;# 跳过空行 puts "Processing line: '$line'" # 检查是否为`define宏定义 if {[llength $line] >= 2 && [lindex $line 0] eq "`define"} { set macro_name [join [lrange $line 1 end]] # 打开测试用例的日志文件并运行测试 if {[catch {open "$macro_name.log" a} log_file]} { puts "Error opening log file for test case '$macro_name'" continue } # 记录开始信息 log_info "Test execution started for: $macro_name" $log_file # 尝试运行测试用例 run_test_case $macro_name $log_file # 记录结束信息 log_info "Test execution completed for: $macro_name" $log_file close $log_file ;# 关闭当前测试用例的日志文件 } else { puts "Invalid format in line: '$line'" } after 1000 ;# 延时1秒,避免频繁操作 } # 所有用例都运行完毕后退出循环 set RUNREGRESSION 0 close $f } puts "All test cases have been executed successfully. Please enjoy it!" 当第一个用例结束后打印了信息,但是跑第二个用例的时候,有执行了一次第一个用例。 ************************************************************************* # @ 0 Welcome to run CYCLE_PERIOD_TESTCASE testcase!!! # ************************************************************************* # # PPPPP A SSSS SSSS # PP P A A S S # PPPPP AAAAA SSS SSS # PP A A S S # PP A A SSSS SSSS # # ** Note: $stop : C:/Users/tommi wei/Desktop/vlast_p_sim/verilog_file/tb_top.sv(657) # Time: 7773787500 ps Iteration: 1 Instance: /tb_top # Break in Task CYCLE_PERIOD_TESTCASE at C:/Users/tommi wei/Desktop/vlast_p_sim/verilog_file/tb_top.sv line 657 # Processing line: '`define UNBIAS_TESTCASE' # End time: 16:07:27 on Jun 05,2025, Elapsed time: 0:00:14 ************************************************************************* # @ 0 Welcome to run CYCLE_PERIOD_TESTCASE testcase!!! # ************************************************************************* # # PPPPP A SSSS SSSS # PP P A A S S # PPPPP AAAAA SSS SSS # PP A A S S # PP A A SSSS SSSS # # ** Note: $stop : C:/Users/tommi wei/Desktop/vlast_p_sim/verilog_file/tb_top.sv(657) # Time: 7773787500 ps Iteration: 1 Instance: /tb_top
最新发布
06-06
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值